2016-11-25 34 views
0

可能是一个简单的问题,但我无法自己弄清楚,使用环境和范围确定仍然困惑着我。R:在上层函数中赋值

我有一个函数,嵌套在一个函数中。我试图做到的,是分配一个值(使用assign功能,我已阅读,使用<<-可能是危险的),在其父的嵌套函数,并用它还有:

myfun <- function(m) { 
    m*3*y 
    f1 <- function() { 
    assign(x = y, value = 2, envir = parent.frame()) 
    } 
    f1() 
} 

然而,错误是返回:

Error in myfun(m = 5) : object 'y' not found 

另外,如果我有一个函数,嵌套函数嵌套在一个函数,嵌套函数等,我想选择其中上层指派该值从最低级别的功能?

+0

函数(m)中的变量'y'是什么? –

+0

@Carles Mitjans:'y'取值为2,在函数'f1'中定义。 – panman

+0

在“myfun”的第一行中,“m * 3 * y”,“y”没有被定义,这就是为什么你会得到这个错误。 –

回答

1

两点。在使用y进行计算之前,您需要运行f1()x参数assign函数需要字符。

myfun <- function(m) { 
    f1 <- function() { 
    assign(x = "y", value = 2, envir = parent.frame()) 
    } 
    f1() 
    m*3*y 
} 

myfun(5) 
+0

哦......你说得对,谢谢。 – panman