我有一个整数向量列表,例如:
set.seed(1)
vec_list <- replicate(100, sample(1:10000000, size=sample(1:10000, 100)), simplify=FALSE)
还有一个整数向量,例如:
vec <- sample(1:10000000, size=10000)
如何计算 vec_list 中每个向量中出现在向量 vec 中的整数数量?我可以使用 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
最佳答案
关于:
sapply(vec_list, function(x) sum(x %in% vec))
关于r - 如何有效地计算 R 中列表中的匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57208154/