how to create a vector of blank spaces of different sizes in R

590 Views Asked by At

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.

4

There are 4 best solutions below

1
Maël On BEST ANSWER

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] " "          "    "       "      "     "          "
0
PaulS On

A possible solution:

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

sapply(x, \(y) paste0(rep(" ", y), collapse = ""))

#> [1] " "          "    "       "      "     "          "
0
Rui Barradas On

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)

0
Carl On
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)