0

There is a data frame df containing one column.

df <- data.frame(pseudonym = c("a", "b", "c", "d"))

df
  pseudonym
1         a
2         b
3         c
4         d

Now I like to create empty columns with column names coming from a character vector (df2 and sn).

sn <- c("sn01", "sn02", "sn03")

sn
[1] "sn01" "sn02" "sn03"

df2 should be

df2 <- data.frame(
  pseudonym = c("a", "b", "c", "d"),
  sn01 = NA,
  sn02 = NA,
  sn03 = NA,
  sn04 = NA
)

df2
  pseudonym sn01 sn02 sn03 sn04
1         a   NA   NA   NA   NA
2         b   NA   NA   NA   NA
3         c   NA   NA   NA   NA
4         d   NA   NA   NA   NA

I'm searching for a tidyverse statement somethink like this

df2 <- mutate___(df, ..., sn)

Could anybody help?

poetspie
  • 73
  • 7

1 Answers1

2

It's probably not really in the spirit of the tidyverse, but you can do

df %>% mutate(`[<-`(df, sn, value = NA))
#>   pseudonym sn01 sn02 sn03
#> 1         a   NA   NA   NA
#> 2         b   NA   NA   NA
#> 3         c   NA   NA   NA
#> 4         d   NA   NA   NA
Allan Cameron
  • 147,086
  • 7
  • 49
  • 87