在R中查找不同列中的字​​符串

时间:2013-04-23 15:20:06

标签: string r variables search multiple-columns

我有一个包含数百行的4列数据集,这里有一些示例:

A      B     C     D     
V1     V2    V100    V4
V15    V5    V6    V100 
V8     V3    V9    V10
V3     V11   V12   V13

我想获得A列中的变量列表,但不是其他变量列表(如上例中的V1),然后是C列和D列中的另一个变量列表,但其他变量列表中没有(如V100在示例中)等等。任何简单的命令都可以做到这一点,而不必进入复杂的for循环?

重要提示:我所拥有的名字太复杂了(而且它们包括支架,空位,背面和背景)这只是我所拥有的一个简单的表现。

谢谢,

1 个答案:

答案 0 :(得分:5)

构建reproducible example

set.seed(1)
d <- data.frame(replicate(4,paste0("V",sample(1:10,4,replace=TRUE))))
names(d) <- LETTERS[1:4]
#    A   B  C  D
#1  V3  V3 V7 V7
#2  V4  V9 V1 V4
#3  V6 V10 V3 V8
#4 V10  V7 V2 V5

我相信你正在寻找setdiff

with(d,setdiff(A,D))

如果您想进行多项比较,Reduce可能会有所帮助:

with(d,Reduce(setdiff,list(A,B,C,D)))

如果您想将一列与多个(​​或所有)其他列进行比较:

Reduce(setdiff,c(d[,"A",drop=FALSE],d[,setdiff(names(d),"A"),drop=FALSE]))