我有一个整数向量列表,例如:
set.seed(1)
vec_list <- replicate(100, sample(1:10000000, size=sample(1:10000, 100)), simplify=FALSE)
还有一个整数向量,例如:
vec <- sample(1:10000000, size=10000)
如何计算出现在向量vec中的vec_list中每个向量中的整数数目?我可以使用for循环来做到这一点。例如:
total_match <- rep(NA, length(vec_list))
for (i in 1:length(vec_list)){
total_match[i] <- length(which(vec_list[[i]] %in% vec))
print(i)
}
但是,我也尝试应用的列表和向量非常大,而且速度很慢。请提供有关如何提高性能的建议。
使用data.table更快,但是在没有匹配项的情况下不会返回0。例如:
DT <- data.table(repid=rep(1:length(vec_list), sapply(vec_list, length)), val=unlist(vec_list))
total_match2 <- DT[.(vec), on=.(val), nomatch=0L, .N, keyby=.(repid)]$N
也许尝试:
DT <- setDT(stack(setNames(vec_list, 1:length(vec_list))))
DT[, x := +(values %in% vec)][, sum(x), keyby=.(ind)]$V1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句