r - 使用 mutate() 进行公式评估

标签 r plyr dplyr

有没有办法让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/

相关文章:

r - 在函数中使用dplyr的问题(group_by)

r - 连接多个数据框时使用数据框名称作为后缀

python - R - 使用行级条件变量合并两个 Data.Frame

r - r散点图中的不同绘图符号

r - 转换纬度和经度

r - 合并两个数据帧,但表示两个数据帧中都存在的列

r - 在 R 中导入 csv 文件/从整数转换为 double 的问题

r - 为什么 setnames() 会影响复制的表?

r - 在 R 中保存坐标分组中的线的快速方法