R:如何使用将函数的输出转化为常量
问题描述:
假设我有一些代码行可以产生一个常量z
,然后我用它来创建一个函数myFunc
。R:如何使用将函数的输出转化为常量
y <- 1.5
z <- y * 3
myFunc <- function(x){x * z + 5}
然后我保存myFunc
供以后使用。
save(myFunc, file = "C:\\Functions\\myfunc")
当我打开这个功能,但是,它仍然是引用的z
输出,这点我可以不再在我的环境(除非我救z
与myFunc
一起)。
我的问题是,创造myFunc
的时候,有没有一些办法纳入值的z
,而不是在变量的引用?
非常感谢!
答
为什么不添加z
作为您的函数的参数?
myFunc <- function(x,z=5){x*z +5}
myFunc(3)
[1] 20
答
您可以更改函数的主体。在您简单的例子,Z可以像这样(你必须要找到z
表达式树)的值改为:
body(myFunc)[[2]][[2]][[3]] <- z
myFunc
# function (x)
# {
# x * 4.5 + 5
# }
或者你可以在函数体从解析表达式改变:
body(myFunc) <- parse(text = sprintf("{ x * %f + 5 }", z))
周围的函数体搞乱的方式将被添加属性的功能:
myFunc <- function(x){
if(!is.null(attr(myFunc, "z")))
z <- attr(myFunc, "z")
x * z + 5
}
attr(myFunc, "z") <- z
谢谢!使用解析函数工作。 –