2013-10-02 27 views
0

行名稱我想測試一個矩陣的列名被包含的矩陣即rownames內如果colnames(abun)和rownames(x)的示例下面測試是否COL名稱是在中的R

中內包含
abun <- matrix(c(0.4,0,0.6,0.1,0.4,0.5), 
    nrow = 2, ncol = 3, byrow = TRUE, dimnames = list(c("x", "y"), 
    c("A","B","C"))) 

abun 
    A B C 
x 0.4 0.0 0.6 
y 0.1 0.4 0.5 

x<-data.frame("Trait1" =c(1,1,0,1), 
        "Trait2"=c(1,1,1,1), 
        "Trait3" =c(1,1,0,1), 
        "Trait4" =c(1,0,1,1)) 
rownames(x)<-c("A","B","C","D") 

x 
    Trait1 Trait2 Trait3 Trait4 
A  1  1  1  1 
B  1  1  1  0 
C  0  1  0  1 
D  1  1  1  1    

更新: 我寫一個函數,想一個錯誤信息,如果colnames(abun)不rownames內包含被拋出(X)。我曾嘗試:

if(colnames(abun) %in% rownames(x) = FALSE) 
stop("species names in abun and x do not match") 

回答

1
colnames(abun)[ 
colnames(abun) %in% rownames(x) 
] 

colnames(abun) %in% rownames(x)返回指示哪個元件上colnames(abun)存在於rownames(x)真/假矢量。

1

你只是要求的2個集的交集?

intersect(c("A","B","C","D") , 
      c("A","B","C")) 
[1] "A" "B" "C" 

要得到區別使用setdiff

setdiff(c("A","B","C","D") , 
      c("A","B","C")) 
[1] "D" 
+0

不,我只是想測試一下,如果colnames(髮髻(包含行名稱(x)的範圍內,如果它不是我想要扔在功能 – Elizabeth

+1

的錯誤消息,如果A被包含在b,A間b = A ....所以,你可以使用類似'如果(相交(rownames(X),colnames(b))!= rownames(X ))停止(...' – agstudy

相關問題