我想用starts_with()识别变量,然后执行case_when变异.
例如,假设我想做相同的:
mtcars$mpg[mtcars$mpg == 21.0] <- 5; mtcars
Run Code Online (Sandbox Code Playgroud)
我的尝试:
mtcars %>%
mutate_at(
vars(starts_with("mpg")),
funs(. = case_when(
. == 21.0 ~ 5,
TRUE ~ .
))
)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?dplyr文档似乎没有很多mutate_at/mutate_each的例子(这个线程看起来有同样的抱怨),所以我很难用这些函数.也许我不是在寻找合适的地方?
我知道这个帖子但是在那里找不到解决方案.
谢谢!
Psi*_*dom 10
funs创建的功能列表,当你这样做funs(. = ...),它创建了一个名为同名称的功能.,这导致与在该名称所产生的新列(S).如果你只有一列,或用后缀名.,如果您有不止一列要变异; 如果需要覆盖原始列,只需通过直接传递匿名函数来保留未命名的函数funs.在你的情况,消除. =在funs应该工作;
mtcars %>%
mutate_at(
vars(starts_with("mpg")),
funs(case_when(
. == 21.0 ~ 5,
TRUE ~ .
))
)
Run Code Online (Sandbox Code Playgroud)