如何用R语言glue函数拼接多元素字符向量并返回单一结果
解决glue返回多个结果的问题
你当前代码里,c(a, b)生成了长度为3的字符向量,glue会对向量中每个元素单独做插值,所以输出了三行结果。要得到单一的目标字符串,得先把向量元素转换成符合R语法的格式——也就是带单引号、逗号分隔的字符串,再传给glue。
下面是两种可行的实现方式:
方法一:用shQuote() + toString()
library(glue) a = c('cyl', 'mpg') b = 'carb' # 把向量元素转为带单引号的格式,再合并成逗号分隔的字符串 cols = shQuote(c(a, b), type = "sh") %>% toString() glue("mtcars[c({cols})]")
运行后会输出:
mtcars[c('cyl', 'mpg', 'carb')]
方法二:用glue_collapse()拼接元素
library(glue) a = c('cyl', 'mpg') b = 'carb' # 先给每个元素加单引号,再用glue_collapse拼接成字符串 col_str = glue_collapse(shQuote(c(a, b), type = "sh"), sep = ", ") glue("mtcars[c({col_str})]")
两种方法的核心逻辑一致:先把向量里的每个列名加上单引号,再把它们合并成一个整体字符串,这样glue只需要做一次插值,就能得到你想要的单一结果。
内容的提问来源于stack exchange,提问作者zhiwei li
相关产品推荐
相关产品推荐

