R语言如何通过...参数拼接多个输入值并以加号分隔
问题背景
需要实现一个函数,接收...省略号传入的任意数量变量,将所有变量拼接为单个字符串,变量之间以+连接。
初始错误实现代码:
rhs <- function(...) { paste(..., " + ") }
测试调用:
rhs("a", "c")
预期输出:
"a + c"
实际错误输出:
"a c + "
错误原因
paste()函数的核心规则是:
- 位置参数
...里的所有内容都会被当作待拼接的独立元素 sep参数控制不同输入向量对应位置元素之间的连接符,默认值为空格collapse参数控制将结果向量折叠为单个字符串时,元素之间的连接符,默认值为NULL(即不折叠,返回向量)
原代码把" + "放在了...传参位置,相当于把它当成了一个待拼接的普通元素,既没有指定元素间的连接符,还额外多拼了一个加号字符串,自然会出现末尾多余空格和加号的问题。
修正方案
最稳妥的实现方式是先把...传入的所有参数合并为字符向量,再通过collapse参数指定+作为分隔符折叠为单个字符串,代码如下:
rhs <- function(...) { # 合并所有传入参数 input_params <- c(...) # 用+作为分隔符拼接为单个字符串 paste(input_params, collapse = " + ") }
测试调用rhs("a", "c")即可得到预期结果"a + c",传入更多参数时也能正常工作,比如rhs("x", "y", "z")会返回"x + y + z"。
内容的提问来源于stack exchange,提问作者writer_typer
相关产品推荐
相关产品推荐

