我有2列数据,我想确定并计算不匹配的数量。我用:使用R匹配2列的数据
c <-rep ("p*02:01:01:01+p*02:01:02:01", 6)
d <-rep ("p*02:01:02:01+p*02:01:01:01", 6)
y <-data.frame(c,d, stringsAsFactors = F)
y
# c d
# 1 p*02:01:01:01+p*02:01:02:01 p*02:01:02:01+p*02:01:01:01
# 2 p*02:01:01:01+p*02:01:02:01 p*02:01:02:01+p*02:01:01:01
# 3 p*02:01:01:01+p*02:01:02:01 p*02:01:02:01+p*02:01:01:01
# 4 p*02:01:01:01+p*02:01:02:01 p*02:01:02:01+p*02:01:01:01
# 5 p*02:01:01:01+p*02:01:02:01 p*02:01:02:01+p*02:01:01:01
# 6 p*02:01:01:01+p*02:01:02:01 p*02:01:02:01+p*02:01:01:01
y$c == y$d
# [1] FALSE FALSE FALSE FALSE FALSE FALSE
但输出应该适用于所有的6行,因为我想知道是否P * 02:01:01:01和P * 02:01:02:01出现在这两列c和d,我不在乎p * 02:01:01:01还是p * 02:01:02:01在加号之前或之后。
添加了其他示例的数据框。此外,mapply公式只适用于数据框,但不适用于我导入的csv文件。
Ÿ
c d
1 p*02:01:01:01, p*02:01:02:01 p*02:01:02:01, p*02:01:01:01
2 p*02:01:01:01, p*02:01:02:01 p*02:01:02:01, p*02:01:01:01
3 p*02:01:01:01, p*02:01:02:01 p*02:01:02:01, p*02:01:01:01
4 p*02:01:01:01, p*02:01:02:01 p*02:01:02:01, p*02:01:01:01
5 p*02:01:01:01, p*02:01:02:01 p*02:01:02:01, p*02:01:01:01
6 p*02:01:01:01, p*02:01:02:01 p*02:01:02:01, p*02:01:01:01
7 p*02:01:01:01, p*02:01:01:01 p*02:01:01:01, p*02:01:13
8 p*02:134, p*02:01:01:01 p*02:01:01:01, p*02:01:13
9 p*01:01:01:01, p*02:01:01:01 p*01:01:01:01, p*02:01:01:01
也许'mapply(函数(X,Y)全部( x == y),lapply(strsplit(y $ c,“[+]”),sort),lapply(strsplit(y $ d,“[+]”),sort))#[1] TRUE TRUE TRUE TRUE TRUE TRUE' – akrun