2014-03-24 137 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]