考虑以下示例数据:
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
- 循环,我将不胜感激。
答案 0 :(得分:1)
你可以尝试:
match(arrayA, mapmatrix[,2])
#[1] 1 2 3 5 6
如果您重复匹配,fmatch
的{{1}}会更快
library(fastmatch)