首页 > 解决方案 > 结合选择助手和谓词函数在 dplyr 中进行变异

问题描述

我想同时基于谓词函数(例如is.character“选择助手”(例如starts_with("Z"))以编程方式选择要变异的列。

library(dplyr)

df <- tibble(V1 = "a", V2 = 1, Z1 = "a", Z2 = 1)

所需的输出(mutate_at(df, "Z1", paste, "b")但没有Z1明确选择):

structure(list(V1 = "a", V2 = 1, Z1 = "a b", Z2 = 1), class = c(
  "tbl_df", "tbl", "data.frame"
), row.names = c(NA, -1L))

换句话说,如何“组合”mutate_at(df, vars(starts_with("Z")), paste, "b")mutate_if(df, is.character, paste, "b")在单个变异中?

标签: rdplyr

解决方案


为什么不使用两个步骤?

df %>%
  select_if(is.character) %>%
  select(starts_with("Z"))

编辑:

select_if(df, is.character) %>%
  select(starts_with("Z")) %>%
  names() %>%
  mutate_at(df, ., paste, "b")

推荐阅读