2015-04-17 191 views
2

我有一個包含p x b個數據框的列表(res)。每個數據幀有12列但行數不同(例如,res[[1]][[1]]有12列和36行,但res[[1]][[1]]有12列和38行)​​。 我想將它們組合成一個有12列和179行的單個數據框。 do.call("rbind", listOfDataFrames)方法不起作用,因爲我鬆散的列和行信息。讓我知道,如果需要進一步的說明。 非常感謝!R:將列表列表組合到一個數據框中

+0

怎麼樣:'庫(data.table); rbindlist(listOfDataFrames)' –

+0

它給了我下面的錯誤:'FUN中的錯誤(X [[1L]],...): 無效列:它具有維度。無法格式化它。如果是data.table(table())的結果,可以使用as.data.table(table())來替代.' – user2205323

+1

你可以發佈'dput(listOfDataFrames)'的結果嗎? –

回答

4

實際上它是一個包含5元素的列表。第一個元素是數據幀列表,而其他元素2,3,45NULL。所以你需要做的訪問列表的第一個元素:

do.call(rbind, listOfDataFrames[[1]]) 

或者:

rbindlist(listOfDataFrames[[1]]) 
+0

非常感謝,也爲解釋! – user2205323

+1

有可能做'lst = Filter(function(u)!is.null(u),listOfDataFrames)' –

+0

再次感謝!這裏只是一個更多的信息,對於那些會遇到一些不同問題的人來說也許很重要。如果你有一個像'results [[p]] [[b]]這樣的層次結構列表,並且你想把它合併成一個單獨的數據幀,那麼解決方案是:'list < - unlist(results,recursive = FALSE) df < -rbindlist(list)'我剛剛添加了這個,也許對某個人有用...... – user2205323

相關問題