Reputation: 11
I'm trying to have a vector of strings with repeated values like this:
[1] "subcarinal, subcarinal"
[2] "subcarinal, subcarinal, subcarinal"
I want the number of repetitions of each word to be based on a different vector:
x<- 2 0 2 3
I want the output to be in this case:
[1] "subcarinal, subcarinal"
[2] ""
[3] "subcarinal, subcarinal"
[4] "subcarinal, subcarinal, subcarinal"
I have tried this and it doesn't work:
dat <- data.frame(name=rep("subcarinal", times=c(x)))
Upvotes: 1
Views: 72
Reputation: 9878
We can use rep
, toString
and map
:
library(purrr)
string<-'subcarinal'
map_chr(x, ~toString(rep(string, .x)))
[1] "subcarinal, subcarinal"
[2] ""
[3] "subcarinal, subcarinal"
[4] "subcarinal, subcarinal, subcarinal"
Upvotes: 2
Reputation: 887851
We may use strrep
from base R
dat <- data.frame(name = trimws(strrep("subcarinal, ", x), whitespace = ",\\s*"))
-output
> dat
name
1 subcarinal, subcarinal
2
3 subcarinal, subcarinal
4 subcarinal, subcarinal, subcarinal
Or using rep
data.frame(name = mapply(function(u, v) toString(rep(u, v)),
rep("subcarinal", length(x)), x))
x <- c(2, 0, 2, 3)
Upvotes: 1