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

如何在R中将列值合并为带单引号的SQL可用逗号分隔字符串

问题描述

现有模拟数据与代码:

# 创建模拟数据
data <- data.frame(test = c('a2','t33b','s5c','d102','e4e','df1f'))
data <- as_tibble(data)

当前使用的代码:

data2 <- data %>% summarise(test2 = toString(test)) %>% ungroup()

当前输出:

# A tibble: 1 x 1
  test2                        
  <chr>                        
1 a2, t33b, s5c, d102, e4e, df1f

希望得到每个元素带单引号的逗号分隔字符串,用于后续构建SQL查询,期望输出如下:

# A tibble: 1 x 1
  test2                        
  <chr>                        
1 'a2', 't33b', 's5c', 'd102', 'e4e', 'df1f'
解决方案

方法1:结合str_c与toString

先给每个元素添加单引号,再拼接成目标字符串:

library(dplyr)
library(stringr)

data2 <- data %>%
  mutate(test_quoted = str_c("'", test, "'")) %>%
  summarise(test2 = toString(test_quoted)) %>%
  ungroup()

方法2:直接用str_c的collapse参数(更简洁)

无需额外mutate步骤,在summarise中一步完成引号添加与拼接:

library(dplyr)
library(stringr)

data2 <- data %>%
  summarise(test2 = str_c("'", test, "'", collapse = ", ")) %>%
  ungroup()

方法3:基础R实现(无需加载tidyverse包)

用基础R的paste0和paste组合完成需求:

data2 <- data.frame(
  test2 = paste0("'", data$test, "'", collapse = ", ")
)
# 如需转为tibble格式,可添加:
data2 <- as_tibble(data2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:45:37