我有两个包含名字的长向量(list.1,list.2)。我想运行一个循环,检查 list.2 中的任何名称是否与 list.1 中的任何名称匹配。如果匹配,则将匹配名称在列表 list.1 中的位置的值添加到向量 result 中。
for (i in list.2){
for (j in list.1){
if(length(grep(list.2[i], list.1[j]), ignore.case=TRUE)==0){
append(result, j)
break
} else append(nameComment.corresponding, 0)
}
}
上述代码是一种非常暴力的方法,由于我的向量长度分别为5,000和60,000,它可能需要运行超过360,000,000个周期。我该如何改进它呢?
%in%
或者match()
吗? - A5C1D2H2I1M1N2O1R2T1intersect
的用法...在你的情况下,将其包装在match(intersect(list.1, list.2), list.1)
中。永远不要编写O(N1*N2)循环... - smci