我正在从数据框中构建一个简单的INSERT INTO
查询,就像玩具示例一样:
library(datasets)
library(magrittr)
library(reprex)
insert_into_01 <-
"INSERT INTO teams (mpg, cyl, disp, hp, drat)\nVALUES"
# The separator does not get inserted at the end of each () line
insert_into_02 <- head(mtcars, 5) %>%
glue::glue_data("({mpg}, {cyl}, {disp}, \\
{hp}, {drat})", .sep = ",")
insert_into_03 <- ";"
qry_create_teams_04 <- stringr::str_c(c(insert_into_01, insert_into_02,
insert_into_03),
collapse = "\n")
qry_create_teams_04 %>% cat()
#> INSERT INTO teams (mpg, cyl, disp, hp, drat)
#> VALUES
#> (21, 6, 160, 110, 3.9)
#> (21, 6, 160, 110, 3.9)
#> (22.8, 4, 108, 93, 3.85)
#> (21.4, 6, 258, 110, 3.08)
#> (18.7, 8, 360, 175, 3.15)
#> ;
问题是.sep
命令似乎没有在glue_data
函数中正确传递。每个条目后,值条目应该有一个逗号,
。
编辑:预期输出为:
#> INSERT INTO teams (mpg, cyl, disp, hp, drat)
#> VALUES
#> (21, 6, 160, 110, 3.9), #<-- see the comma at the end
#> (21, 6, 160, 110, 3.9), #<-- another comma here
#> (22.8, 4, 108, 93, 3.85),
#> (21.4, 6, 258, 110, 3.08),
#> (18.7, 8, 360, 175, 3.15) # <-- no comma for the last entry
#> ;
有人可以帮忙解决上述问题吗?
我特别希望编码以尽可能干净地使用 tidyverse
和 glue
包来理想地实现这一目标
答案 0 :(得分:-1)
.sep
是在提供多个参数时应用的分隔符。如果需要尾随字符,只需将其添加为最后一个参数:
glue_data(head(mtcars, 4), "({mpg}, {cyl}, {disp}, {hp}, {drat})", ",")
#> (21, 6, 160, 110, 3.9),
#> (21, 6, 160, 110, 3.9),
#> (22.8, 4, 108, 93, 3.85),
#> (21.4, 6, 258, 110, 3.08),
这假设一个空的分隔符""
,这是默认的。