![](/img/trans.png)
[英]How to apply a window function over a subset of rows inside dplyr::mutate?
[英]How to apply an anonymous function inside dplyr mutate pipeline in a rowwise manor?
下面给出了一个简单的可重现示例,我想在变量vs
和vm
处对mtcars
dataframe 进行变异,如果值等于 1,则将其更改为 2。下面是我的原始方法,它会产生错误the condition has length > 1
. 所以很明显它不是遍历向量中的每个元素。
mtcars %>% mutate_at(vars(vs,am),function(x) {if(x == 1){x <- 2}})
我的第二种方法是尝试lapply
迭代向量中的每个元素,这也给了我一个错误Error in match.fun(FUN): argument "FUN" is missing, with no default
。
mtcars %>% mutate_at(vars(vs,am),lapply(function(x) {if(x == 1){x <- 2}}))
我显然知道如何在 for 循环中完成此操作,只是想了解幕后的逻辑。
mtcars %>%
mutate(across(c(vs, am), ~ case_when(.x == 1 ~ 2, TRUE ~ .x)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.