如何使用dplyr改变列的子集?

时间:2017-01-13 03:55:42

标签: r dplyr

我有tbl

data_frame(a_a = letters[1:10], a_b = letters[1:10], a = letters[1:10])

我正在尝试替换d开头的所有a_,其值为new value

我认为以下代码可以完成这项工作,但事实并非如此:

data_frame(a_a = letters[1:10], a_b = letters[1:10], a = letters[1:10]) %>% 
  mutate_each(vars(starts_with('a_'), funs(gsub('d', 'new value',.))))

而不是

  

错误:is.fun_list(calls)不为TRUE

1 个答案:

答案 0 :(得分:1)

this similar question引导并考虑dft作为您的输入,您可以尝试:

dft %>%
  dplyr::mutate_each(funs(replace(., . == "d", "nval")), matches("a_"))

给出:

## A tibble: 10 × 3
#     a_a   a_b     a
#   <chr> <chr> <chr>
#1      a     a     a
#2      b     b     b
#3      c     c     c
#4   nval  nval     d
#5      e     e     e
#6      f     f     f
#7      g     g     g
#8      h     h     h
#9      i     i     i
#10     j     j     j