2016-11-25 42 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