如何在嵌套问题中访问函数环境变量?

时间:2017-05-25 22:02:13

标签: r function plyr

我在R中开发了一些利用uniroot.all()功能进行剂量反应分析的功能。说我有一个功能,如:

library(rootSolve)
library(plyr)

examplefunction <- function(x){

  adply(mtcars, 1, summarize,
    solution <- uniroot(function (a){
      mpg + x + a},
      interval = c(-100,100)))

}

如果我输入examplefunction(1),我会收到错误

Error in f(lower, ...) : object 'x' not found

现在我的函数有几个其他变量和拟合方程,函数用optim()求解,但我希望这足以解释这个问题。

目前我通过在函数开头全局分配变量来“解决”我的问题,如下所示:

library(rootSolve)
library(plyr)

examplefunction <- function(x){

x2 <<- x
  adply(mtcars, 1, summarize,
    solution <- uniroot(function (a){
      mpg + x2 + a},
      interval = c(-100,100)))

}

在我看来,这非常草率。我想做的是允许uniroot.all()从功能环境而不是全局环境访问x

x用于adply()之外的部分功能,整个功能与optim()一起运行,所以我不能在uniroot.all()内定义它们adply()函数。

感谢您的帮助。

0 个答案:

没有答案