2014-03-24 232 views
4

我正在使用randomForest函数从randomForest包中找到最重要的变量: 我的数据框称为urban,我的响应变量是数字收入。R随机森林:data(x)有0行

urban.random.forest <- randomForest(revenue ~ .,y=urban$revenue, data = urban, ntree=500, keep.forest=FALSE,importance=TRUE,na.action = na.omit) 

我得到以下错误:

Error in randomForest.default(m, y, ...) : data (x) has 0 rows 

的源代码它关系到x变量:

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

但我不明白什么是x

+1

您正在混合公式和默认方法。如果你传递一个公式给'randomForest',你不应该再传递'y'值,因为那么函数就会假定公式是'x'值,并且出错了。 – Roland

+0

我删除了y = urban $收入,但错误依然存在:randomForest.default(m,y,...)中的错误:data(x)有0行 –

+0

我还有一个新错误:另外:警告消息: 在randomForest.default(m,y,...)中: 响应具有五个或更少的唯一值。你确定要做回归吗?虽然我的响应变量具有58个唯一值长度(唯一(城市$收入))#== 58 –

回答

3

我解决了这个问题。我有一些列的所有值都是NA或相同。我放弃了他们,它确定。我的列类是字符,数字和因子。

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]