将向量更改为字符串 - 最后一个元素的特殊分隔符

Fer*_*oao 3 r concatenation

我试图用逗号和“和”作为字符串中的分隔符连接动态变化的向量的元素。问题是,当字符向量只有一个元素时,我在字符串前有一个不需要的“和”。

vec <-c("something")
vec <-c("something","something")
vec <-c("something","something","something") 

paste0(c(paste(head(vec, n=length(vec) -1), collapse = ", ") , 
         "and", paste(tail(vec, n=1) ) 
        ), 
      collapse= " ")

[1] " and something" # not what is expected
[1] "something and something" # ok
[1] "something, something and something" #ok
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

我们可以使用subpaste

fPaste <- function(vec) sub(",\\s+([^,]+)$", " and \\1", toString(vec))


fPaste("something")
#[1] "something"

fPaste(c("something","something"))
#[1] "something and something"

fPaste(c("something","something","something") )
#[1] "something, something and something"

fPaste(c("something","something","something", "something") )
#[1] "something, something, something and something"
Run Code Online (Sandbox Code Playgroud)