最近我一直在研究一些R腳本來做一些報告。涉及的任務之一是檢查列中的值是否與另一個數據幀的任何行相匹配。如果這是真的,那麼使用邏輯TRUE/FALSE設置新列。R代碼難以置信
更具體地說,我需要幫助改善這個代碼塊:
for (i in 1:length(df1$Id)) {
df1 <- within(df1, newCol <- df1$Id %in% df2$Id)
}
df1$newCol <- as.factor(df1$newCol)
數據集有大約10,000行,因此沒有意義需要6分鐘(與proc.time()
測試,以徹底執行它,這是什麼它目前正在發生的事情。另外,我必須這樣做其他類型的檢查的,所以我真的需要得到這個權利。
我在做什麼錯在那裏被吞噬的時間內完成?
謝謝你你的幫助!
你的代碼是矢量化的 - 不需要for循環。在這種情況下,你可以告訴因爲*你甚至不在循環內使用'i' *。如果你有10K行,那麼你正在運行完整的操作10K次。如果你在你的函數行中刪除'for'包裝,'df1 < - (df1,newCol < - df1 $ Id%in%df2 $ Id)',你應該得到〜10k倍的加速。 – Gregor
哇,這就是你在R中獲得新手的原因:-)謝謝!解決了這個問題並且有意義 - 感謝解釋! –
@Gregor,發表評論爲答案...? –