3

我有一个包含数百行的 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 循环?

重要提示:我的名字太复杂了(并且它们包含括号、斜杠、反斜杠和取消标记)这只是我所拥有的简单表示。

谢谢,

4

1 回答 1

5

构建一个可重现的例子

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]))
于 2013-04-23T15:36:18.857 回答