替代for循环

时间:2014-08-25 05:57:13

标签: r for-loop vectorization

考虑以下示例数据:

mapmatrix <- cbind(c(1,2,3,4,5,6),c(1,2,4,5,7,10))
arrayA <- c(1,2,4,7,10)
arrayB = rep(0,length(arrayA))
for(i in 1:length(arrayB))
{
arrayB[i] = which(mapmatrix[,2]==arrayA[i])
}

我被告知要尽可能避免R中的for循环。即使arrayA有大约400K元素,mapmatrix的维度为{200万x 2},我确实觉得非常耗时。如果我可以用更快的替代方案替换for - 循环,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

你可以尝试:

 match(arrayA, mapmatrix[,2])
 #[1] 1 2 3 5 6

如果您重复匹配,fmatch的{​​{1}}会更快

library(fastmatch)