I have 3 strings:
a<-c("a1","a2","a3")
b<-c("b1","b2","b3")
c<-c("c1","c2","c3")
How can I get the following output:
"a1","b1","c1","a2","b2","c2","a3","b3","c3"
Here is what I tried:
paste(a,b,c,sep='","')
And what I got:
[1] "a1\",\"b1\",\"c1" "a2\",\"b2\",\"c2" "a3\",\"b3\",\"c3"
Is there a way to do it? Thank you.
You concatenate strings by using the + operator. For string literals and string constants, concatenation occurs at compile time; no run-time concatenation occurs. For string variables, concatenation occurs only at run time.
To concatenate strings, we use the + operator. Keep in mind that when we work with numbers, + will be an operator for addition, but when used with strings it is a joining operator.
Dart – Concatenate a String with itself Multiple Times To concatenate a string with itself multiple times in Dart, use Multiplication Operator * and pass the string and the integer as operands to it.
You could also use
c(rbind(a,b,c))
which (rbind
) puts the three variables together into a matrix (row-wise), and then (c()
) converts them back into a vector, taking advantage of the fact that R stores matrices in column-wise order.
Some of the diversity of the answers to this question stems (I think) from a lack of clarity on the OP's part (don't know whether this is an issue of understanding or communication ...) between combining individual character strings (e.g. paste("a","b")
results in a vector of length 1: "a b")
) and combining vectors of character strings (c("a","b")
results in a vector of length 2: "a" "b"
)
I'd do it this way:
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"
The advantage is that you don't have to depend on the vectors having the same size. For example:
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"
This is closely related to this answer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With