gpt4 book ai didi

r - 将数据框列中的所有列表元素提取到各个列中的函数

转载 作者:行者123 更新时间:2023-12-04 12:34:14 25 4
gpt4 key购买 nike

使用后purrr:map沿着时间序列列表列,我最终得到了一个 tibble 列表中的结果(我在这里可能有一些术语错误,但希望该示例能够解决问题)。是否可以在不指定每个列表元素名称的情况下将结果列表中的每一列提取为数据框列?

示例数据:

tmp <- tibble(col1 = c("A1", "A2") , 
col2 = c("B1", "B2"),
col3 = list(
list(x = TRUE, b = list(data.frame(y1=c(1,2,3), y2=c(4,5,6)))),
list(x = FALSE, b = list(data.frame(y1=c(1,2,3), y2=c(4,5,6))))))

所需的输出(但不必输入每一列 - 实际上我还有更多):
tmp %>% mutate(x = map(tmp$col3, "x")[[1]],
b = map(tmp$col3, "b")[[1]])

编辑 :从那以后我意识到我上面的“手动解决方案”是错误的..
我不确定如何手动提取 b,但对于 x,它应该是:
tmp %>% mutate(x = map_lgl(col3, "x"))

最佳答案

一种方法是先将列表列 ( col3 ) 的每一行转换为 tibble,然后再取消嵌套结果

library(tidyverse)
tmp %>% mutate(new_col = map(col3, as_tibble)) %>% unnest(new_col)

#> # A tibble: 2 x 5
#> col1 col2 col3 x b
#> <chr> <chr> <list> <lgl> <list>
#> 1 A1 B1 <list [2]> TRUE <data.frame [3 × 2]>
#> 2 A2 B2 <list [2]> FALSE <data.frame [3 × 2]>

关于r - 将数据框列中的所有列表元素提取到各个列中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52286482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com