【发布时间】:2018-11-25 15:29:12
【问题描述】:
我有一个数据框,其中最后一列是一列列表。下面是它的外观:
Col1 | Col2 | ListCol
--------------------------
na | na | [obj1, obj2]
na | na | [obj1, obj2]
na | na | [obj1, obj2]
我想要的是
Col1 | Col2 | Col3 | Col4
--------------------------
na | na | obj1 | obj2
na | na | obj1 | obj2
na | na | obj1 | obj2
我知道所有列表都有相同数量的元素。
编辑:
ListCol 中的每个元素都是一个包含两个元素的列表。
【问题讨论】:
-
这很大程度上取决于
ListCol的结构。如果它包含每一行的数据框或命名列表,则只需tidyr::unnest即可。如果是其他结构,您可能需要先重新排列。要获得更好的答案,请在您的示例数据上使用调用dput的结果进行编辑,以便我们可以重现确切的结构。 -
你好。我试过 unnest 但它一直在做的是让对象分开,但在不同的行而不是列中。 ListCol 的每一行都是一个列表
-
让它横向扩展而不是向下扩展的最简单方法是使每个列表元素成为 1 行数据框,例如使用
df$ListCol <- lapply(df$ListCol, function(x) as.data.frame(t(x)))(如果您愿意,可以使用 dplyr 和 purrr),然后调用unnest。 -
这是 alisatire 针对类似问题的解决方案:stackoverflow.com/questions/49889246/how-to-unnest-column-list 使用 invoke_map 和 tibble。还有其他几个解决方案:stackoverflow.com/questions/49689927/…
标签: r multiple-columns