基本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
,則返回空字符串)?