解析数据框中的重载列 - 使用一个 mutate 语句创建多个列

Parsing overloaded column in dataframe - creating multiple columns with one mutate statement

我有一个重载列,overloaded在包含 1432312789 等值的数据框中。

df <- data_frame(id = 1:3, 
                 overloaded = c("145", "459", "2"))

我想将此列解析为 9 个新的布尔列。

df %>% 
  mutate(col_1 = str_detect(overloaded, "1"),
         col_2 = str_detect(overloaded, "2"),
         col_3 = str_detect(overloaded, "3"),
         col_4 = str_detect(overloaded, "4"),
         col_5 = str_detect(overloaded, "5"),
         col_6 = str_detect(overloaded, "6"),
         col_7 = str_detect(overloaded, "7"),
         col_8 = str_detect(overloaded, "8"),
         col_9 = str_detect(overloaded, "9"))

喜欢

id   overloaded    col_1 col_2 col_3 col_4 col_5 col_6 col_7 col_8 col_9
 1      145        TRUE  FALSE FALSE TRUE  TRUE  FALSE FALSE FALSE FALSE
 2      459        FALSE FALSE FALSE TRUE  TRUE  FALSE FALSE FALSE TRUE 
 3      2          FALSE TRUE  FALSE FALSE FALSE FALSE FALSE FALSE FALSE

我怎样才能不重复自己写这个?

pat = as.character(1:9)
res = sapply(pat, FUN = str_detect, string = df$overloaded)
colnames(res) = paste("col", pat, sep = "_")
cbind(df, res)
#     id overloaded col_1 col_2 col_3 col_4 col_5 col_6 col_7 col_8 col_9
# 145  1        145  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE
# 459  2        459 FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE
# 2    3          2 FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE