You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言:将列表列转换为字符向量,合并分组列表为单个字符值

在R语言中将分组后的列表列转换为字符向量

嘿,这个需求太常见了!我给你分享几种简单高效的实现方式,不管是直接一步到位生成目标结果,还是转换已经得到的列表列都能用:

方法1:直接在分组聚合时完成拼接(最推荐)

不用先生成list列,直接在summarise里把每组的字符串拼接起来,省掉中间步骤:

使用stringr包的str_c(语法更清晰)

library(dplyr)
library(stringr)

test <- data.frame(a = c(1,1,1,2,2,2), b = c("a", "b", "c", "d", "e", "f" )) %>%
  group_by(a) %>%
  summarise(b = str_c(b, collapse = ", "))

使用base R的paste(无需额外包)

如果不想加载stringr,用base R的paste也能实现同样效果:

library(dplyr)

test <- data.frame(a = c(1,1,1,2,2,2), b = c("a", "b", "c", "d", "e", "f" )) %>%
  group_by(a) %>%
  summarise(b = paste(b, collapse = ", "))

方法2:转换已有的列表列

如果你已经通过代码生成了带list列的test数据,也可以用下面的方法把list列转成字符串:

用purrr的map_chr遍历处理

library(dplyr)
library(purrr)
library(stringr)

# 先得到带list列的test
test <- data.frame(a = c(1,1,1,2,2,2), b = c("a", "b", "c", "d", "e", "f" )) %>%
  group_by(a) %>%
  summarise(b = list(b))

# 转换list列为逗号分隔的字符串
test <- test %>%
  mutate(b = map_chr(b, ~str_c(.x, collapse = ", ")))

用base R结合dplyr的.by参数

如果不想用purrr,也可以用base R的unlist配合.by分组处理:

library(dplyr)

test <- test %>%
  mutate(b = paste(unlist(b), collapse = ", "), .by = a)

这些方法都能帮你得到想要的结果:a列是分组标识,b列是每组字符串用逗号加空格拼接后的单个字符值。

内容的提问来源于stack exchange,提问作者adl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:02:16