基本R函数paste
和paste0
允许连接字符串(显然称为R中的字符)。如何将字符串连接到可能的空字符向量的每个元素?
例如:
>new_people <- c(" R. A. Becker", "J. M. Chambers", "A. R. Wilks")
>paste0("Hello ",new_people,"!")
[1] "Hello R. A. Becker!" "Hello J. M. Chambers!" "Hello A. R. Wilks!"
然而,如果一个参数为长度为零(character()
)的,它的行为不一致的和意想不到的(我):
> new_people <- character()
> paste0("Hello ",new_people,"!")
[1] "Hello !"
此行为被描述(但不动机)在?paste
:
向量参数被回收为neede d,零长度参数被循环到“”。 [...] 值: 连接值的字符向量。如果所有对象都是零,那么它的长度为零,除非collapse为非NULL,在这种情况下它是单个空字符串。
如果您没有发现它“不一致”,但想象一下Equivalent of R's paste command for vector of numbers in Python的答案,它将真正重现paste
的行为。
为了避免我的代码混乱,我没有成功搜索paste
的替代函数或参数,它们只会回收长度为1的参数。 @ hadley的stringr
软件包中的str_c
函数都没有提供这种行为。
是否有替代方法粘贴(和paste0)的行为一致w.r.t.零长度参数(即在这种情况下返回零长度字符向量,如果collapse
不是NULL
,则返回空字符串)?