我有一个列表,如下所示:
$ 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
....
....
提前感谢
您可以使用stack
将命名列表获取到数据帧,然后使用aggregate
:
aggregate(values~ind, stack(lst), toString)
使用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
数据
lst <- list(key1 = c("value_1", "value_2" ,"value_3"),
key2 = c("value_1", "value_4", "value_5"),
key3 = c("value_2", "value_5", "value_6"))
temp_list <- list(key_1 = c('value_1', 'value_2', 'value_3'),
key_2 = c('value_1', 'value_4', 'value_5'),
key_3 = c('value_2', 'value_5', 'value_6'))
data.frame(Key = names(temp_list), Value = do.call(paste, c(temp_list, list(sep = ', '))))
你可以用基本R 这样做