programing

R에서 parent.frame ()과 parent.env ()의 차이점은 무엇입니까?

nasanasas 2020. 10. 8. 08:04
반응형

R에서 parent.frame ()과 parent.env ()의 차이점은 무엇입니까? 참조에 의한 호출에서 어떻게 다릅니 까?


누군가가 간단한 예를 들어 이것을 설명 할 수 있다면 도움이 될까요?

또한 parent.frame()대신 사용하는 것이 유용 parent.env()하거나 그 반대의 경우도 마찬가지입니다.


parent.env클로저 (예 : 기능)가 정의 된 환경입니다. parent.frame클로저가 호출 된 환경입니다.

f = function() 
     c(f=environment(), defined_in=parent.env(environment()),  
       called_from=parent.frame())
g = function() 
     c(g=environment(), f())

그리고

> g()
$g
<environment: 0x14060e8>

$f
<environment: 0x1405f28>

$defined_in
<environment: R_GlobalEnv>

$called_from
<environment: 0x14060e8>

나는 단순한 필사자가 언제 정말로 그것을 사용하고 싶을 지 확실하지 않지만 개념은 여기서 어휘 범위를 이해하는 데 유용합니다.

> f = function() x
> g = function() { x = 2; f() }
> h = function() { x = 3; function() x }
> x = 1
> f()
[1] 1
> g()
[1] 1
> h()()
[1] 3

또는 R 소개의 수수께끼 같은 '은행 계좌'예에서. 세부 정보 섹션의 첫 번째 단락이 ?parent.frame상황을 명확히 할 수 있습니다.

환경은 R에서 널리 퍼져 있습니다. 예를 들어, search()경로는 형제-> 부모 관계로 함께 연결된 (대략) 환경입니다. 하나는 때때로보고 env = new.env(parent=emptyenv())보통 - 우회하기 심볼 룩업에 env[["x"]]처음에 보이는 것 env, 다음에서 env의 부모 발견되지 않는 경우는. 마찬가지로, <<-할당 외모는에서 시작 parent.env. R의 비교적 새로운 참조 클래스 구현은 이러한 아이디어에 의존하여 심볼 (인스턴스 필드 및 메서드)을 찾을 수있는 인스턴스 별 환경을 정의합니다.

참고 URL : https://stackoverflow.com/questions/7439110/what-is-the-difference-between-parent-frame-and-parent-env-in-r-how-do-they

반응형