2013-04-23 76 views
3

我有4列的數據集數百行,這裏有一個小例子:查找字符串中的R

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)等等。任何簡單的命令,可以做到這一點,而無需進入複雜的循環?重要提示:我的名字太複雜了(它們包含括號,斜線,反斜槓和有限元)這只是我所擁有的簡單表示。

感謝,

+2

您的例子沒有按似乎不符合你的描述 - 例如V3在所有列中,你是否需要列A中的V1,V15,V8?請稍微清楚一點 – eddi 2013-04-23 15:36:04

+1

@eddi,對不起,我對變量犯了一個錯誤,我編輯了這個問題,謝謝您的注意。 – Error404 2013-04-23 15:38:09

回答

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]))