我试图通过传递变量名作为参数来编写函数。然后,在下游管道中使用这一点来变异变量。
使用一种更经典但可能有点笨重的方法,我可以这样做:
var = "Sepal.Width"
scale_fun1 = function(dat,var) {
dat[,"new_var"] = dat[,var]*100
return(dat)
}
scale_fun1(iris,var)
我认为使用管道是很简单的,但事实证明,这比函数传递管道变量时更困难,因为当函数传递管道变量时,它不会像应该解析的那样解析,这会导致二进制运算符错误的非数值参数。请给我怎么修理?
var = "Sepal.Width"
scale_fun2 = function(dat,var) {
iris %>% dplyr::mutate(new_variable = var * 100)
}
scale_fun2(iris,var)
发布于 2021-11-26 02:01:26
您需要使用非标准的评估,这是值得一读的。在这种情况下,您很可能需要在变异行中!!
var
的前端。
这是台词:
mutate(new_variable = !!sym(var) * 100)
https://stackoverflow.com/questions/70122493
复制相似问题