2016-07-05 4 views
-1

RでrandomForestパッケージを使用しようとしていますが、Rが応答にデータがないことを示すベクター。RのRandomForestはオブジェクトの値が欠落していると報告しますが、ベクトルにはNAsがありません

> 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 

すべてのベクターをチェックして、どのベクターにもNAsが含まれていないことを確認しました。

誰にも提案はありますか?

+0

あなたは 'sapply(blackcomb_earlyGame、function(x)any(is.na(x)))')の出力を表示できますか? – Gregor

+0

私はしようとします。私のRサーバーがクラッシュし、再起動してデータを再ロードしました。 –

+1

ほとんどの場合、タイプ文字の列があります。 'str(blackcomb_earlyGame)'の出力を投稿することができます – dww

答えて

3

randomForestによるデータの問題のいくつかの異なるタイプに失敗する可能性があります。欠損値(NA)、NaN,Infまたは-Infの値、およびファクタにキャストされていない文字タイプは、すべて失敗し、さまざまなエラーメッセージが表示されます。

私たちは、これらの問題のそれぞれによって生成されたエラーメッセージのいくつかの例を下に見ることができます:データフレームにcharacterタイプを持っていることによって引き起こされた表示されたエラーメッセージは、(参照、興味深いことに

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) 

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 
関連する問題