有没有办法让mutate()
评估 R 的 (d)plyr 包中的公式?我想到了有很多变量的情况,比如 count.a, count.b, ..., count.z
我想创建一个新变量来总结所有这些。我可以创建一个字符串,如 "count.total = count.a + count.b + (...) + count.z"
,但如何制作mutate()
评价一下?
最佳答案
如果你想要表达式输入
library(dplyr)
df = data.frame(x = 1:10, y = 2:11)
f = function(df, s){
eval(substitute(mutate(df, z = s)))
}
f(df, x-y)
f(df, x+y)
如果你想要字符输入
g = function(df, s){
q = quote(mutate(df, z = s))
eval(parse(text=sub("s", s, deparse(q))))
}
g(df, "x-y")
g(df, "x+y")
您还可以修改函数以采用
z
的名称。作为输入。表达式输入:
f1
将所有额外参数传递给 mutate
, f2
只传递一个参数给 mutate
.f1 = function(df, ...){
mutate(df, ...)
}
f1(df, a = x-y)
f2 = function(df, ...){
dots = substitute(alist(...))
var = names(dots)[2]
cal = as.call(list(quote(mutate), quote(df)))
cal[var] = dots[2]
eval(cal)
}
f2(df, a = x-y)
再次,如果你想使用字符输入
g1 = function(df, s){
q = quote(mutate(df, z = s))
eval(parse(text=sub("z = s", s, deparse(q))))
}
g1(df, "a=x-y")
g1(df, "w=x+y")
关于r - 使用 mutate() 进行公式评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22908050/