R随机林:数据(x)有0行

R随机林:数据(x)有0行,r,random-forest,R,Random Forest,我正在使用randomForest软件包中的randomForest函数查找最重要的变量: 我的数据框称为urban,我的响应变量是数值形式的revenue urban.random.forest <- randomForest(revenue ~ .,y=urban$revenue, data = urban, ntree=500, keep.forest=FALSE,importance=TRUE,na.action = na.omit) 在源代码上,它与x变量相关: n &l

我正在使用randomForest软件包中的
randomForest
函数查找最重要的变量: 我的数据框称为urban,我的响应变量是数值形式的revenue

urban.random.forest <- randomForest(revenue ~ .,y=urban$revenue, data = urban, ntree=500,    keep.forest=FALSE,importance=TRUE,na.action = na.omit)
在源代码上,它与
x
变量相关:

n <- nrow(x)
p <- ncol(x)
if (n == 0) 
stop("data (x) has 0 rows")

n我解决了这个问题。我有一些列,它们的值都是NA或相同的。我把它们扔了,一切正常。我的列类是character、numeric和factor

 candidatesnodata.index <- c()
 for (j in (1 : ncol(dataframe)))   {

   if (    is.numeric(dataframe[ ,j])  &  length(unique(as.numeric(dataframe[ ,j]))) == 1      )
     {candidatesnodata.index <- append(candidatesnodata.index,j)}
                                }

dataframe <- dataframe[ , - candidatesnodata.index]

candidatesnodata.index我也遇到了类似的问题,原因是我传入了一个字符串版本的调用

y ~ x1 + .... xn
到randomForest调用的公式参数。简单的修复方法是将输入转换为as.Formula()


我希望这能为任何人节省一些时间

您正在混合公式和默认方法。如果将公式传递给
randomForest
,则不应再次传递
y
值,因为该函数会假定公式是
x
值,结果会出错。我删除了y=urban$revenue,但错误仍然存在:randomForest中的错误。默认值(m,y,…):数据(x)有0行我还有一个新错误:另外:警告消息:在randomForest中。默认值(m,y,…):响应具有五个或更少的唯一值。您确定要执行回归吗?虽然我的响应变量有58个唯一值length(unique(urban$revenue))#==58,但错误可能在您的数据中,因为您的行在iris数据
urban.random.forest中运行良好
y ~ x1 + .... xn