Трудно знать наверняка без дополнительной информации о ваших данных, но, как показывает ошибка, у вас есть какое-то из этих значений (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
) и просмотр любых изменений, внесенных в ваши данные, кажется хорошим началом.