将包含列表的R数据框转换为包含字符串的数据框



我有一个用R生成的数据框,其中各个字段被列表占用。下面是一个例子:

col1 <- list (c("a", "b", "c"), c("d", "e", "f", "g"))
col2 <- list (c("h", "i"), "j")
df = cbind (col1, col2) %>% as.data.frame()

将每个字段中的列表更改为字符串的好方法是什么?

如果您希望每个数据帧单元格中的向量用逗号分隔符连接成单个字符串(因为您没有在问题中指定这一点),您可以这样做:

df[] <- lapply(df, function(x) sapply(x, function(y) paste(y, collapse = ', ')))
df
#>         col1 col2
#> 1    a, b, c h, i
#> 2 d, e, f, g    j

或者,使用tidyverse语法

library(dplyr)
df %>% 
mutate(across(.fns = ~ map(.x, ~ paste(.x, collapse = ', '))))
#>         col1 col2
#> 1    a, b, c h, i
#> 2 d, e, f, g    j

创建于2023-01-21与reprex v2.0.2

最新更新