4

I have a vector of "sizes" or "widths", like this one:

x <- c(1, 4, 6, 10) 

and I would like to create another vector based on x, a vector like this one:

y <- c(" ", " ", " ", " ") 

Basically there are two imputs for creating y: the blank space " " and the vector x.

So as you can see, the vector x defines the length of the blank spaces in y. I know I can do this creating a function from scratch, but I'm guessing if there's some kind of function or combination with rep, paste0 or other built in functions in R.

Any idea? thanks.

1

4 Answers 4

6

Use strrep:

strrep(" ", c(1, 4, 6, 10)) #> [1] " " " " " " " " 

In stringr, you can also use str_dup:

stringr::str_dup(" ", c(1, 4, 6, 10)) #> [1] " " " " " " " " 
Sign up to request clarification or add additional context in comments.

1 Comment

very nice solution, I didn't know this function, thanks!
2

A possible solution:

x <- c(1, 4, 6, 10) sapply(x, \(y) paste0(rep(" ", y), collapse = "")) #> [1] " " " " " " " " 

Comments

1

Here is a solution.

x <- c(1, 4, 6, 10) y <- sapply(x, \(n) formatC(" ", width = n)) y #> [1] " " " " " " " " 

Created on 2022-08-09 by the reprex package (v2.0.1)

Comments

1
library(stringr) x <- c(1, 4, 6, 10) y <- str_pad(" ", width = x) y #> [1] " " " " " " " " 

Created on 2022-08-09 by the reprex package (v2.0.1)

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.