r - 将函数强制转换为表达式?
问题描述
是否有任何函数或方法将函数对象强制转换为 R 中的表达式?
假设我有u = function (x, y) 2 * x^0.8 * y^0.2
. 我想要实现的是转换u
成一个call
或expression
对象。示例,2 * x^0.8 * y^0.2
带有mode(.) == 'call'
或expression(2 * x^0.8 * y^0.2)
我知道您可以执行以下操作:
str2lang(deparse(u)[[2]])
2 * x^0.8 * y^0.2
deparse
仍然可以在函数有几行的情况下工作。
ff = function(x, y) {
x = x + 1
y = y + 1
return(x+y)
}
str2lang(paste(deparse(ff)[-1], collapse='\n'))
{
x = x + 1
y = y + 1
return(x + y)
}
是否已经在 R 中实现了更好的方法?
解决方案
使用body
. 不使用任何包。
b <- body(ff)
# test
eval(b, list(x = 3, y = 10))
## [1] 15
# compare to ff
ff(x = 3, y = 10)
## [1] 15
推荐阅读
- xcode - 使用 Xcode 的新构建系统运行预构建步骤
- datastax - 在 cassandra 中选择不同计数的方法是什么?
- javascript - 如何从具有公共键:值对的对象数组中创建单个对象
- python - 从 Python 中将文件名传递给子进程
- mongodb - 当我在 docker 上运行 Jenkins 的作业时无法连接到 MongoDb
- android - 为什么我不能在 build.gradle 中实现设计库
- unity3d - Unity 错误:调试不包含日志的定义。在 Visual Studio Code 中编码,还安装了所需的数据包,但仍然无法正常工作
- html - CSS-背景图像不是全屏(uikit)
- xamarin.forms - xamarin 形成棱镜白屏
- amazon-web-services - 尝试从 S3 加载模型时,无法从链中的任何提供商加载 AWS 凭证 - 错误