将列表转换为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 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 这样做

最新更新