2016-07-04 5 views
1

agricolae 패키지를 사용하여 비정상적인 데이터에서 kruskal.test을 실행 중입니다. 일부 그룹은 서로 정확하게 동일한 값을가집니다. kruskal 테스트가이 문제를 제대로 처리하지 못하면 Error in if (s) { : missing value where TRUE/FALSE needed 오류가 나타납니다. 처음에는 모든 값이 0이기 때문에 이것이라고 생각했지만 테스트 할 동일한 큰 숫자를 만들면 같은 오류가 나타나고 함수는 stop (루프를 통해 함수를 실행 함)이며 아무 것도 평가하지 않습니다. 첫 번째 묶인 변수 너머.agricolae에서 넥타이 다루기 Kruskal 테스트, R

분명히 차이가 없으므로 이러한 그룹에 통계를 실행하는 지점이 없지만 agricolae:kruskal에 의해 생성 된 정보를 사용하여 요약 테이블을 생성하고 이러한 변수가 필요합니다. 이 패키지를 계속 사용하는 것이 나에게 가치있는 정보를 많이 제공하기 때문에 계속 사용하는 것이 좋습니다. 묶인 변수를 실행하기 위해 할 수있는 일이 있습니까?

> dput(example) structure(list(TREATMENT = c("A", "A", "A", "B", "B", "C", "C", "C", "D", "D"), W = c(0, 1.6941524646937, 1.524431531984, 0.959282869723864, 1.45273122733115, 0, 1.57479386520925, 0.421759202661462, 1.34235435984449, 1.52131484305823), X = c(0, 0.663872820198758, 0.202935807030853, 0.836223346381214, 0.750767193777965, 1.18128574225979, 2.03622986392828, 3.56466682539425, 0.919751117364462, 0.917347336682722), Y = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Z = c(2.1477548118197, 2.0111754022729, 3.14642815196242, 4.46967452127494, 1.53715421615569, 2.36274861406182, 2.33262528044302, 2.50970456594739, 2.96088598025103, 2.22841740590261 )), class = "data.frame", row.names = c(NA, 10L), .Names = c("TREATMENT", "W", "X", "Y", "Z"))

library(agricolae) 

example<-as.data.frame(example) 


for(i in 2:(ncol(example))){ 
    krusk <- kruskal(example[,i],TREATMENT,group=TRUE) 
print(krusk) 
} 
+0

당신은 재현 예제를 포함시겠습니까? http://stackoverflow.com/help/mcve http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

+0

@ Hack-R 당신의 소원은 내 명령입니다. –

+0

감사합니다. 질문을 돕고 이해하는 것이 훨씬 쉽습니다. –

답변

1
for(i in 2:(ncol(example))){ 
    if(var(example[,i]) > 0){ 
    krusk <- kruskal(example[,i],example$TREATMENT,group=TRUE) 
    print(krusk) 
    } 
} 
+0

우우! 정말 고맙습니다. 이 작품! 나는 보통'data frame'을 만들고'rownames (df) <- colnames (example [-1])'를 사용하여 행의 이름을 짓는다. 'kruskal' 테스트에서 제외 된 열을 제외 할 수 있도록이 함수에 동일한 'IF'조건을 적용 할 수 있는지 알고 있습니까? –

+1

@ J.Con 글쎄, 당신은'tmp'라는 빈 객체를 사용하는 다른 라인을 추가 할 수 있습니다. ('tmp <- c (colnames (example) [i], tmp) ') 다음에 그 객체를 rownames에 할당합니다. –

+0

알았습니다! 'tmp'가 먼저 나옵니다. 그래서'tmp <-c (tmp, colnames (example [i]))' –