【发布时间】:2019-07-24 09:05:23
【问题描述】:
对于单个 data.frames 对象列表,我通常可以轻松转换:
my_df <- do.call("rbind", lapply(my_list, data.frame))
但是,我当前拥有的列表对象是嵌套的。它是 data.frames 列表的列表。需要注意的几点:
- 父列表中某些子列表的元素为空。
- 在包含信息的子列表中,一些列表具有多个 data.frame 对象。
- data.frame 对象的数量可能因子列表而异。
这是我正在处理的一个简化示例:
List of 3
$ 1 :List of 2
..$ : NULL
..$ : NULL
$ 2 :List of 2
..$ :'data.frame': 3 obs. of 2 variables:
.. ..$ name : chr [1:3] "jack" "jim" "joe" "jon"
.. ..$ value : chr [1:3] "10" "12" "13" "14"
..$ :'data.frame': 4 obs. of 2 variables:
.. ..$ name : chr [1:4] "jacky" "jane" "juanita" "julia"
.. ..$ value : chr [1:4] "11" "9" "10" "14"
$ 3 :List of 1
..$ :'data.frame': 5 obs. of 2 variables:
.. ..$ name : chr [1:5] "adam" "ashley" "arnold" "avery" "arthur"
.. ..$ value : chr [1:5] "6" "7" "11" "12" "11"
上面的do.call 方法报告了arguments imply differing number of rows 的错误,所以看起来我的带有不同行号的data.frames 的列表导致了这个问题?
我尝试了this post 中描述的一些策略,但每次尝试都有其独特的错误。
data.table "rbindlist" 方法和dplyr "bind_rows" 方法都报告了:
fill=TRUE, but names of input list at position 1 is NULL
感谢您提供有关如何处理这种情况的任何提示。
【问题讨论】:
-
见this
-
我看到
Error: Argument 1 must have names。有什么方法可以指定我要绑定的是子列表,而不是列表列表?
标签: r