0
对不起,希望它不太误导。 我有以下数据帧DF1:匹配列和列表
id1 clas1 clas2 clas3
512 ns abx NA
512 ns or NA
512 abx dm sup
845 or NA NA
1265 dd ivf NA
1265 ns ivf pts
9453 col ns ivf
9453 abx ns or
95635 ns abx or
然后,我有“DF2”具有以下信息(一些在DF1 $ ID1的值被包括在DF2 $ ID2,反之亦然),它是一个列在另一数据集或第一个不同的长度。
id2 clas0
102 ns
512 ns
915 ns
1265 ns
9453 ns
10485 ns
95639 ns
100348 ns
我所试图做的是要算多少“ID1”具有在任何CLAS列(即“NS”)的共同价值(即“NS”)与ID2。
所以我已经试过这样:
x<-as.numeric(levels(factor(df2$id2)))
clas<-ls()
for(i in 1:x){
for(j in 1:length(df1$id1)){
if(df1$id1==i){clas[[i]]=append(clas[[i]],c(df1$clas1[j],df1$clas2[j],df1$clas3[j]))}
}
}
我想在这里做的是建立包括所有clas1,clas2或clas3列表时反复ID1,这样我可以再后来看到当clas0中的值是否包含在列表中的某个位置? 但我总是收到以下警告:
In if (id1$id1 == i) { ... :
the condition has length > 1 and only the first element will be used
我被卡住了。有人能指出我正确的方向吗? 非常感谢 马尔科
我不太明白你想要做什么,但错误可能是从'如果(DF1 $ ID1 == I)'。 'if'不返回一个向量,它返回一个T/F值。你试图让它比较整个'df $ id'向量与'i',它应该为'df $ id'的每个元素返回T/F,而不仅仅是单个T/F。 – TheComeOnMan
您能举一个例子说明您如何期望输出看起来像 –