我想尝试在R脚本中消除所有for循环,以加快代码的运行时间。
我有一个像下面这样的for循环:
for(i in 1:x){
pip$FAIL_COUNT[i] <- sum(dat$PIPE_ID == pip$ID[i])
}
我有一个ID的向量(
pip$ID
),长度为250k,只有唯一值。
我有一个与失败实例相关的第二个ID向量(dat$PIPE_ID
),长度为12k,包含重复值。并非每个
pip$ID
的值都在dat$PIPE_ID
中表示,但是dat$PIPE_ID
中的每个值都在pip$ID
中表示。我试图计算出第三个向量
pip$FAIL_COUNT
,记录pip$ID
中的每个值在dat$PIPE_ID
中出现的次数,可能是0或更多个整数。例如:
pip$ID <- c(123, 234, 345, 456, 567, 678, 789, 890)
dat$PIPE_ID <- c(123, 123, 234, 789, 345, 123)
#calculation
pip$FAIL_COUNT
[3, 1, 1, 0, 0, 0, 1, 0]
上述for循环完美地实现了这一点。但它速度较慢。 有没有不使用for循环就能实现这个目标的方法?