Is there a way to paste together the elements of a vector in R without using a loop?
Asked Answered
H

2

67

Say there's a vector x:

x <- c("a", " ", "b")

and I want to quickly turn this into a single string "a b". Is there a way to do this without a loop? I know with a loop I could do this:

y <- ""
for (i in 1:3){
    paste(y, x[i], sep = "")
}

> y
[1] "a b"

but I will need to do this over many, many iterations, and having to loop over this and replace the original with the new each time would become very time consuming. I always want to be able to do something like this:

x <- paste(x)

as if paste() could smartly divide up the elements of a vector itself, but I know it can't. Is there another function, or a more creative way to use paste(), which can accomplish this efficiently?

Harriet answered 14/7, 2011 at 19:27 Comment(0)
I
131

You just need to use the collapse argument:

paste(x,collapse="")
Indore answered 14/7, 2011 at 19:32 Comment(5)
Thank you! I kept thinking there should be something called "collapse" involved in this, but I couldn't find any documentation on it.Harriet
It's right there in ?paste! ;) If you're ever confused about a function type ?function in the console to access the help files.Indore
Yeah guess it didn't occur to me that it'd be an argument of paste. Just when you think you know a function...:PHarriet
R help files are remarkably helpful, even if it isn't an argument of the function you might just find the function you are looking for:)Clubby
You can use paste(str_pad(l,width=7,side="left"), collapse = "")Astrix
W
7

Just adding a tidyverse way to provide an alternative to using paste():

library(glue)
x <- c("a", " ", "b")
glue_collapse(x)
#> a b

Created on 2020-10-31 by the reprex package (v0.3.0)

Wednesday answered 1/11, 2020 at 3:7 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.