由coercionError在randomForest.default(m,y,...)中引入的NA:外部函数调用(arg 1)中的NA / NaN / Inf

时间:2019-05-06 23:04:56

标签: r

我正在运行以下代码

class(TrainSet$volume)赋予了我[1] "numeric"

然后我跑

model1 <- randomForest(TrainSet$volume ~ ., data = TrainSet, importance = TRUE)

它给了我

Error in randomForest.default(m, y, ...) : NA/NaN/Inf in foreign function call (arg 1)

可能是什么原因?谢谢

1 个答案:

答案 0 :(得分:1)

如果不提供有关数据的更多信息,很难确定,但是由于错误提示,您似乎在数据框中的某些位置(NA / NaN / Inf)之一。也许infNA往往会引发不同的错误。我们可以在下面重新创建您的错误:

library(randomForest)

#setting data
data(iris)

#making an infinite value
iris[1,1] <- Inf

#grab row
iris[is.infinite(iris$Sepal.Length),]

#output
#   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1          Inf         3.5          1.4         0.2  setosa

#checking data type
is.numeric(iris$Sepal.Length) #TRUE

#reproducing error
iris.rf <- randomForest(iris$Sepal.Width ~ ., data=iris, importance=TRUE)

#output
Error in randomForest.default(m, y, ...) : 
  NA/NaN/Inf in foreign function call (arg 1)

关于这在数据中的位置或原因尚不清楚(再次,需要查看数据才能进行此调用)。创建inf的常见方法是由于每次处理中的错误而导致混淆的计算,例如除以零。

is.infinite(pi / 0)
#output
# [1] TRUE

扫描无限或NA(使用is.infiniteis.na)并查看对数据所做的任何更改似乎是一个不错的起点。