如果我有一个像
set.seed(1)
df <- data.frame(X = 5:14,
Y = runif(10,0,1),
Z = runif(10,0,1))
我可以
df %>% mutate(Y = if_else(X > 10, -Y, Y),
Z = if_else(X > 10, -Z, Z))
但是如果我有很多变量要以相同的方式进行转换,我更喜欢使用 mutate_at。但是,在这种情况下,我无法使其正常工作。
我的尝试:
testfun <- function(y){if_else(X > 10, -y, y)}
df %>% mutate_at(vars(c("Y","Z")),funs(testfun))
但这导致Evaluation error: object 'X' not found
. 我尝试了类似的变体get("X")
,但没有奏效。有谁知道有效的变化?