2014-08-28 45 views
0

爲了在非常大的數據集上運行隨機森林模型,我將數據分成了塊,並在每個塊上運行randomForest :: randomForest()。生成的randomForest對象包含在列表中。我現在需要使用randomForest :: combine()來組合每個數據塊的樹。randomForest :: combine()和列表中的對象

我的問題是,如何在列表中的所有對象上使用諸如combine()之類的函數?在我的理解中,sapply()等將一個函數應用於列表中的每個對象 - 而不是我想要做的。我需要在列表中的所有randomForest對象上使用combine();或者如果這不是直接可能的,我需要分別提取每個對象並將其發送到combine()。另一個問題是我有不同的數據集和不同數量的數據塊;我希望代碼能夠靈活地處理塊的數量。

我的目錄(rf.final)包含各隨機森林對象的對象「1」至「5」:

> class(rf.final) 
[1] "list" 
> names(rf.final) 
[1] "1" "2" "3" "4" "5" 
> class(rf.final[[1]]) 
[1] "randomForest.formula" "randomForest" 

有,只是因爲我有5塊數據的這個特定的數據集5個對象。

我沒有包括str(rf.final)因爲輸出是巨大的[即使只是爲str(rf.final[[1]])]但我可以如果需要。

回答

1

我終於找到了解決方案!使用基本包中的do.call()函數。

I.e.

rf.final2 <- do.call("combine", rf.final)