Prepend string vector with string [duplicate]
I have a vector of strings.
d <- c("Mon","Tues","Wednes","Thurs","Fri","Satur","Sun")
for which I want to paste the string "day" on each element of the vector in a way similar to this.
week <- apply(d, "day", paste, sep='')
Solution 1:
No need for apply()
, just use paste()
:
R> d <- c("Mon","Tues","Wednes","Thurs","Fri","Satur","Sun")
R> week <- paste(d, "day", sep="")
R> week
[1] "Monday" "Tuesday" "Wednesday" "Thursday"
[4] "Friday" "Saturday" "Sunday"
R>
Solution 2:
Other have already indicated that since paste
is vectorised, there is no need to use apply
in this case.
However, to answer your question: apply
is used for an array or data.frame. When you want to apply a function over a list (or a vector) then use lapply
or sapply
(a variant of lapply
that simplifies the results):
sapply(d, paste, "day", sep="")
Mon Tues Wednes Thurs Fri Satur
"Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"
Sun
"Sunday"
Solution 3:
Apart from paste
/paste0
there are variety of ways in which we can add a string to every element in the vector.
1) Using sprintf
sprintf("%sday", d)
#[1] "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "Sunday"
2) glue
glue::glue("{d}days")
Here {d}
is evaluated as R code. This can be wrapped in as.character
if needed.
3) str_c
in stringr
stringr::str_c(d, "day")
whose equivalent is
4) stri_c
in stringi
stringi::stri_c(d, "day")
5) stringi
also has stri_paste
stringi::stri_paste(d, "day")