【发布时间】:2018-02-11 10:17:47
【问题描述】:
我有三个列表,List1 包含标识符,List2 包含逗号分隔的字符串,这些字符串可能是 List1 中的项目,List3 包含数字(一些测量分数)。
List1=c("Object1","Object2",......,"Objectn")
List2=c("Object1","Object2,Object3","Object4","Object5","Object6", .... )
List3=c("0.90","0,80",....)
所有列表的长度相同。
我要做什么,对于List1中的每一项,对于List2中的每一项,检查交集是否不为空,并增加一个分数。
我可以反复执行此操作,但由于我的列表太长,我想使用 lapply 执行此操作但失败了。任何帮助将不胜感激。
FinalScoreList="",
for(i in 1:length(List1)){
score=0
for(j in 1:length(List2)){
if(length(intersect(List1[[i]],
as.list(unlist(strsplit(as.character(List2[j]),',')))))>0) {
score=score+as.double(List3[j])
}
}
FinalScoreList=c(FinalScoreList,score)
}
【问题讨论】: