gpt4 book ai didi

r - 如何传递表达式 "from higher level"进行变异?

转载 作者:行者123 更新时间:2023-12-04 12:04:36 25 4
gpt4 key购买 nike

我想创建一个包装变异的更高级别的函数。我想为我的函数提供一个表达式参数,并能够在 mutate 中使用该表达式:

datas <- data.frame(x = sample(100))
fn <- function(datas, expr) {
mutate(datas, flag = eval(substitute(expr), datas))
}

fn(datas[1], x > 50)
Error in mutate_impl(.data, dots) : object 'x' not found

但我不明白为什么它会失败,因为 mutate(datas, flag = eval(substitute(x > 50), datas)) 有效。

我做错了什么?

谢谢

最佳答案

试试这个:

fn <- function(df, expr)
eval(substitute(mutate(df, expr), list(expr=substitute(expr))))

或者(最好)这个:

fn <- function(df, expr)
mutate_(df, .dots= list(flag=substitute(expr)))

关于r - 如何传递表达式 "from higher level"进行变异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30816384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com