Re: [問題] 應用迴圈於資料處理的效率

作者: celestialgod (天)   2015-08-08 01:21:24
※ 引述《missingmini (just missing)》之銘言:
: 感謝C大和W大指教,學了不少新東西,許多觀念也有茅塞頓開的感覺,真的非常感謝!
: 有些東西還是有小疑問:
: ==============================================================================
: 1. C大用來取代我第4段程式的寫法如下
: ## 4
: tbl_right_ID = table(tbl_right$ID)
: tbl_right_ID[match(comm_ID$ID, names(tbl_right_ID))] %>% sum
: 想問的是為什麼要先把tbl_right$ID建成一個table,然後在match裡面再取其names來用?
為了去算comm_ID$ID在tbl_right_ID裡面出現幾次
所以只能先unique names再用match去找到對應的ID,然後總和
計算個別ID次數跟unique names的動作可以一起做就會變成table,然後再找對應ID做總和
: 有沒有方法可以直接用tbl_right物件來操作?
不太懂這個的目的是什麼
最簡單的方法應該是
sum(tbl_right$ID %in% comm_ID$ID)
那時候沒想到這個(攤手
: ==============================================================================
: 2. W大提到的迴圈測時程式
: system.time({
: I = 0
: while (I < 1e7) {
: 10
: I = I + 1
: }
: })
: 為什麼要有"10"這一行? 有什麼特殊作用? 我試過把該行comment out再執行,結果
: 比原來快了 0.3 秒左右。
一個例子,R的迴圈會受到東西影響
R就花了不少時間在直譯10這一行上面,所以才造成這種情形
連結裡面的範例是多加了很多()

Links booklink

Contact Us: admin [ a t ] ucptt.com