在mutate_if谓词中使用变量名

时间:2018-12-05 03:45:49

标签: r mutate nse

我可以使用vars()中的mutate_at包装器对名称在字符向量中的变量执行突变:

library(tidyverse)

varnames <- c("mpg", "am")

mtcars.mod <- mtcars %>%
  mutate_at(vars(varnames),
            funs(as.factor(.)))

is.factor(mtcars.mod$mpg)
#> [1] TRUE

但是,如果我想在这些变量上添加谓词/条件,就像我可以使用mutate_if那样怎么办?换句话说,我要对varnames中包含的(1)和(2)满足谓词的变量(例如!is.factor()

)进行变异

我的尝试失败了:

mtcars.mod <- mtcars %>%
  mutate_if(~ (names(.) %in% varnames & !is.factor(.)),
            funs(as.factor(.)))
#> Error in selected[[i]] <- .p(.tbl[[vars[[i]]]], ...): replacement has length zero

我怀疑names(.)可能在这里返回NULL。

0 个答案:

没有答案
相关问题