2016-11-25 2 views
0

아마도 간단한 질문이지만, 환경과 관련된 작업과 범위 설정은 여전히 ​​혼란 스럽습니다.R : 상위 레벨 함수에 값을 지정하십시오.

함수에 중첩 된 함수가 있습니다.

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

그러나 오류는 다음과 같습니다 무엇을 달성하려고하는 값을 지정하는 것입니다 부모의 중첩 된 함수에서 거기 사용합니다 (assign 기능을 사용하여, 나는 <<-를 사용하는 것은 위험 할 수 있습니다 읽었습니다) 반환

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

, 내가 등 함수에 중첩 된 함수에 중첩 된 함수에 중첩 된 함수를, 가지고, 나는 상위 레벨이 값을 할당하는 선택하려는 경우 가장 낮은 수준의 함수에서?

+0

'function (m)'에서 'y'변수는 무엇입니까? –

+0

@Carles Mitjans :'y'는 함수 f1에서 정의 된 2의 값을 취합니다. – panman

+0

'm * 3 * y'가있는'myfun' 첫 줄에는'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

관련 문제