2016-07-05 1 views
-1

R에서 randomForest 패키지를 사용하려고하는데 R에서 응답에 데이터가 누락되었다고 알려주는 문제가 발생했습니다. 벡터.R의 RandomForest가 객체에 누락 된 값을보고하지만 벡터에 0이 포함되어 있음

> rf_blackcomb_earlyGame <- randomForest(max_cohort ~ ., data=blackcomb_earlyGame[-c(1,2), ]) 
Error in na.fail.default(list(max_cohort = c(47, 25, 20, 37, 1, 0, 23, : 
missing values in object 

지정한 오류가 분명합니다. 나는 이전에 그것을 만났습니다. 실제로 데이터가 누락되었습니다. 그러나 이번에는 누락 된 데이터가 없습니다.

> class(blackcomb_earlyGame$max_cohort) 
[1] "numeric" 
> which(is.na(blackcomb_earlyGame$max_cohort)) 
integer(0) 

내가 그 도움이 될 것입니다 있는지 확인하기 위해 na.roughfix를 사용하여 시도했지만, 나는 다음과 같은 오류가 발생합니다.

Error in na.roughfix.data.frame(list(max_cohort = c(47, 25, 20, 37, 1, : 
na.roughfix only works for numeric or factor 

모든 벡터를 검사하여 어느 누구도 어떤 NA도없고 그 중 하나도 확인하지 않았습니다.

누구에게 의견이 있습니까?

+0

'sapply (blackcomb_earlyGame, function (x) any (is.na (x)))')의 출력을 표시 할 수 있습니까? – Gregor

+0

나는하려고 할 것이다. 내 R 서버가 충돌하여 다시 시작하고 데이터를 다시로드합니다. –

+1

대부분 문자 유형의 열이 있습니다. str (blackcomb_earlyGame)의 출력을 게시 할 수 있습니까 – dww

답변

3

randomForest 인해 데이터에 문제의 몇 가지 다른 유형에 실패 할 수 있습니다. 누락 값 (NA), NaN, Inf 또는 -Inf의 값 및 요인에 캐스트되지 않은 문자 유형은 모두 다양한 오류 메시지와 함께 실패합니다.

우리는 이러한 문제 각각에 의해 생성 된 오류 메시지의 예 아래에서 볼 수 있습니다

my.df <- data.frame(a = 1:26, b=letters, c=(1:26)+rnorm(26)) 
rf <- randomForest(a ~ ., data=my.df) 
# this works without issues, because b=letters is cast into a factor variable by default 

my.df$d <- LETTERS # Now we add a character column 
rf <- randomForest(a ~ ., data=my.df) 
# Error in randomForest.default(m, y, ...) : 
# NA/NaN/Inf in foreign function call (arg 1) 
# In addition: Warning message: 
# In data.matrix(x) : NAs introduced by coercion 

rf <- randomForest(d ~ ., data=my.df) 
# Error in y - ymean : non-numeric argument to binary operator 
# In addition: Warning message: 
# In mean.default(y) : argument is not numeric or logical: returning NA 

my.df$d <- c(NA, rnorm(25)) 
rf <- randomForest(a ~ ., data=my.df) 
rf <- randomForest(d ~ ., data=my.df) 
# Error in na.fail.default(list(a = 1:26, b = 1:26, c = c(3.14586293058335, : 
# missing values in object 

my.df$d <- c(Inf, rnorm(25)) 
rf <- randomForest(a ~ ., data=my.df) 
rf <- randomForest(d ~ ., data=my.df) 
# Error in randomForest.default(m, y, ...) : 
# NA/NaN/Inf in foreign function call (arg 1) 

흥미롭게도, 데이터 프레임에 character 유형을함으로써 발생 된받은 오류 메시지 (참조 comments)은 NA 인 숫자 열이있을 때 나타나는 오류입니다. 이는 (1) 서로 다른 버전의 오류 (예 : randomForest) 또는 (2) 오류 메시지가 데이터 구조에보다 복잡한 방식으로 의존하고 있음을 나타냅니다. 어느 쪽이든, 이러한 오류를받는 사람을위한 조언은 원인을 추적하기 위해 위에 나열된 모든 가능한 문제를 조사하는 것입니다.

1

아마도 Inf 또는 -Inf 값이 있습니까?

is.na(c(1, NA, Inf, NaN, -Inf)) 
#[1] FALSE TRUE FALSE TRUE FALSE 

is.finite(c(1, NA, Inf, NaN, -Inf)) 
#[1] TRUE FALSE FALSE FALSE FALSE