将列表转换为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感谢您的回答。但是如果每个键的值的数目不同,程序就无法运行了?谢谢你的回答。但如果每个键的值的数目不同,程序运行失败?