最近我一直在研究一些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,发表评论为答案...? –