将列表转换为R中的两列数据帧

将列表转换为R中的两列数据帧,r,R,我有一个列表,如下所示: $ key_1 [1] "value_1" "value_2" "value_3" $ key_2 [1] "value_1" "value_4" "value_5" $ key_3 [1] "value_2" "value_5" "value_6" ... ... lots of da

我有一个列表,如下所示:

$ key_1
[1] "value_1" "value_2" "value_3"

$ key_2
[1] "value_1" "value_4" "value_5"

$ key_3
[1] "value_2" "value_5" "value_6"

...
...
lots of data

head(df)

    Key     Value
1   key_1   value_1, value_2, value_3
2   key_2   value_1, value_4, value_5
3   key_3   value_2, value_5, value_6
....
....

如何将其转换为两列数据帧,如下所示:

$ key_1
[1] "value_1" "value_2" "value_3"

$ key_2
[1] "value_1" "value_4" "value_5"

$ key_3
[1] "value_2" "value_5" "value_6"

...
...
lots of data

head(df)

    Key     Value
1   key_1   value_1, value_2, value_3
2   key_2   value_1, value_4, value_5
3   key_3   value_2, value_5, value_6
....
....

提前感谢

您可以使用堆栈将命名列表获取到dataframe,然后使用聚合:

使用tidyverse函数

tibble::enframe(lst) %>%
  dplyr::mutate(value = purrr::map_chr(value, toString))

#  name  value                    
#  <chr> <chr>                    
#1 key1  value_1, value_2, value_3
#2 key2  value_1, value_4, value_5
#3 key3  value_2, value_5, value_6
资料

您可以使用堆栈将命名列表获取到dataframe,然后使用聚合:

使用tidyverse函数

tibble::enframe(lst) %>%
  dplyr::mutate(value = purrr::map_chr(value, toString))

#  name  value                    
#  <chr> <chr>                    
#1 key1  value_1, value_2, value_3
#2 key2  value_1, value_4, value_5
#3 key3  value_2, value_5, value_6
资料

你可以用base R这样做


您可以在堆叠之前使用其中一个*apply函数,通过基本R

这样做,这可能比stack+aggregate更好。例如:stacklapplylst、toString。请注意,这些方法不一定相同。例如,如果原始列表具有重复的名称,则在堆叠之前使用*apply函数之一的lst2可能比stack+aggregate更好。例如:stacklapplylst、toString。请注意,这些方法不一定相同。例如,如果原始列表中有重复的名称,lst2感谢您的回答。但是如果每个键的值的数目不同,程序就无法运行了?谢谢你的回答。但如果每个键的值的数目不同,程序运行失败?