2013-10-02 3 views
1

모든 colnames (abun)가 rownames (x)에 있어야하지만 그 반대의 경우는 필요하지 않습니다. 요구 사항이 충족되지 않으면 함수가 오류 메시지를 throw하도록 설계했습니다. 오류 메시지와 함께 나는 colname (abun)이 rownames (x)에없는 것을 사용자에게 알려주고 싶습니다. 어떤 아이디어? 내 현재의 정지 및 오류 메시지는 다음과 같습니다일치하지 않는 값을 식별하는 오류 메시지를 만듭니다.

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","E"))) 

abun 
    A B E 
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    



if(any(colnames(abun) %in% rownames(x) != TRUE)) 
stop("The following species names in abun are missing trait information") 

답변

1

이와 비슷한?

if(any(colnames(abun) %in% rownames(x) != TRUE)) 
stop("The following species names in abun are missing trait information:", 
    paste(setdiff(colnames(abun), rownames(x)), collapse=" ")) 

@Hadley에게 setdiff 제안에 감사드립니다!

+0

감사합니다. 그러나이 작업은 rownames (x)에 하나 이상의 colnames (abun)가 없으면 각 종의 이름 앞에 긴 텍스트를 한 번 반복하지 않고 종의 이름 목록을 반복합니다. 어쨌든 조정할 수 있습니까? 다시 한 번 감사드립니다! – Elizabeth

+0

@ 엘리자베스, 네가 맞아. 그냥 내 대답을 편집,이 작동합니다. – Rob

+0

건배. 다시 한 번 감사드립니다 – Elizabeth

관련 문제