提问者:小点点

将列中的行连接成逗号分隔的字符串,不带c()和\n,但在每个项目上带有单引号以供SQL使用


这是我所拥有的:

# create fake data in representative format
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

但是我如何让字符串的每个“单词”中的项目像这样在它们周围有单引号呢?:

期望输出:

  test2                        
  <chr>                        
1 'a2', 't33b', 's5c', 'd102', 'e4e', 'df1f'

原因是我想稍后使用paste0为SQL查询制作一个带引号的字符串列表。谢谢!

类似的问题:

在R中,以单引号和逗号分隔的打印向量

将列折叠/连接/聚合为每个组中的单个逗号分隔字符串


共1个答案

匿名用户

我们可以用sub插入单引号。

library(tidyverse)
data <- tibble(test = c('a2','t33b','s5c','d102','e4e','df1f'))

data |>
  summarise(test = paste(sub("(^.*$)", "'\\1'", test), collapse = ", ")) 
#> # A tibble: 1 x 1
#>   test                                      
#>   <chr>                                     
#> 1 'a2', 't33b', 's5c', 'd102', 'e4e', 'df1f'