我正在运行以下代码
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)
可能是什么原因?谢谢
答案 0 :(得分:1)
如果不提供有关数据的更多信息,很难确定,但是由于错误提示,您似乎在数据框中的某些位置(NA / NaN / Inf)之一。也许inf
和NA
往往会引发不同的错误。我们可以在下面重新创建您的错误:
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.infinite
或is.na
)并查看对数据所做的任何更改似乎是一个不错的起点。