r - 在 R 中使用 deparse 进行强制评估
问题描述
我有一个产生函数的函数:
fun1 <- function (x)
return (function() x)
到生成函数时, 的值x
已经基本上是一个常数:
fun2 <- fun1 ("a")
但是,当我fun2
打印时,它不会显示实际值,它只会显示,"x"
即使它现在已经过时:
> fun2
function() x
<environment: 0x55a9f94f9fc8>
如何强制评估x
以便fun2
打印为
function() "a"
还是它是生产出来的?
解决方案
没有必要求助于deparse
这里。您可以将 x 的评估值写入新创建的函数的主体中:
fun1 <- function (x){
f <- function() x
body(f) <- x
f
}
以便:
fun1("a")
#> function ()
#> "a"
#> <environment: 0x00000146d0449dd8>
和
f <- fun1("a")
f()
#> [1] "a"
编辑
如果你想f
争论,你可以这样做:
fun1 <- function (x){
f <- function(y) y + x
body(f)[[3]] <- x
f
}
以便
fun1(3)
#> function (y)
#> y + 3
#> <environment: 0x00000146d4b702a0>
推荐阅读
- c# - 使用嵌套字典创建具有参数列表的不同参数列表
- ios - CMMotionManager 中的不规则时间戳
- javascript - 赛普拉斯并不总是执行点击元素
- matlab - 加载 matlab.mixin.Copyable 对象时阻止 Matlab 使用 set 方法?
- reactjs - react-redux:在componentDidMount上并行调用多个api
- shell - twilio API 的 curl 脚本
- php - 无法弄清楚转换字符串
- python - 挥动作为模板函数的类成员函数
- laravel - 声明一个变量用于所有方法 Laravel
- java - Java反向三角串