String 如何交替连接3个字符串

String 如何交替连接3个字符串,string,r,concatenation,String,R,Concatenation,我有3个字符串: a<-c("a1","a2","a3") b<-c("b1","b2","b3") c<-c("c1","c2","c3") 以下是我尝试过的: paste(a,b,c,sep='","') 我得到的是: [1]“a1\”、“b1\”、“c1”“a2\”、“b2\”、“c2”“a3\”、“b3\”、“c3” 有办法吗? 谢谢。我想你想要的是: paste('\"', paste(a,b,c,sep='\",\"'), '\"', collapse='\",

我有3个字符串:

a<-c("a1","a2","a3")
b<-c("b1","b2","b3")
c<-c("c1","c2","c3")
以下是我尝试过的:

paste(a,b,c,sep='","')
我得到的是:

[1]“a1\”、“b1\”、“c1”“a2\”、“b2\”、“c2”“a3\”、“b3\”、“c3”

有办法吗?
谢谢。

我想你想要的是:

paste('\"', paste(a,b,c,sep='\",\"'), '\"', collapse='\",\"')
您不需要双引号来获取“,”。内部的
paste()
执行您尝试的操作,然后外部的
paste()
将所有这些连接在一起,以提供您想要的输出。不要担心输出中有“\”——如果用
cat
打印出来,就会看到它们消失


这对你有用吗?

我想这可能有用:

a<-c("a1","a2","a3")
b<-c("b1","b2","b3")
c<-c("c1","c2","c3")

c(sapply(seq(1,3), function(x) c(a[x],b[x],c[x])))

[1] "a1" "b1" "c1" "a2" "b2" "c2" "a3" "b3" "c3"

a您可以使用
grep
将它们按您想要的顺序排列

> x <- c(a, b, c)
> x[sapply(1:3, grep, x)]
# [1] "a1" "b1" "c1" "a2" "b2" "c2" "a3" "b3" "c3" 
或者可能是
粘贴
,但同时将
sep
collapse
参数设置为
,“

你也可以使用

c(rbind(a,b,c))
它(
rbind
)将三个变量一起放入一个矩阵(行),然后(
c()
)将它们转换回向量,利用R按列顺序存储矩阵的事实

这个问题答案的多样性(我认为)源于OP部分的不清晰(不知道这是否是一个理解或沟通的问题…)组合单个字符串(例如,
粘贴(“a”,“b”)
导致长度为1的向量:
“a b”)
)和字符串向量的组合(
c(“a”,“b”)
会产生长度为2的向量:
“a”“b”

我会这样做:

interleave <- function(...) {
    ll <- list(...)
    unlist(ll)[order(unlist(lapply(ll, seq_along)))]
}
interleave(a,b,c)
# [1] "a1" "b1" "c1" "a2" "b2" "c2" "a3" "b3" "c3"

交错将起作用:
粘贴(字母[1:3],代表(1:3,每个=3),sep='')
?@BenBolker我的一些答案效率太低了,回想起来简直是愚蠢透顶。但这就是我在这里的原因。我认为OP在长度为9的向量之后(对于给定的示例)。
> paste(a, b, c, sep = ",", collapse = ",")
# [1] "a1,b1,c1,a2,b2,c2,a3,b3,c3" 
c(rbind(a,b,c))
interleave <- function(...) {
    ll <- list(...)
    unlist(ll)[order(unlist(lapply(ll, seq_along)))]
}
interleave(a,b,c)
# [1] "a1" "b1" "c1" "a2" "b2" "c2" "a3" "b3" "c3"
a <- paste("a", 1:3, sep="")
b <- paste("b", 1:4, sep="")
c <- paste("c", 1:5, sep="")

interleave(a,b,c)
# [1] "a1" "b1" "c1" "a2" "b2" "c2" "a3" "b3" "c3" "b4" "c4" "c5"