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

Что такое переменная 'y' в' function (m) '? –

+0

@Carles Mitjans: 'y' принимает значение 2, определенное в функции' f1'. – panman

+0

В первой строке 'myfun', где' m * 3 * y', 'y' не определено, поэтому вы получаете эту ошибку. –

ответ

1

Два очка. Вам необходимо запустить f1(), прежде чем вы начнете вычислять с помощью y. x аргумент assign функция принимает знак.

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

myfun(5) 
+0

Ох ... Вы правы, спасибо. – panman

Смежные вопросы