반응형
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의 비교적 새로운 참조 클래스 구현은 이러한 아이디어에 의존하여 심볼 (인스턴스 필드 및 메서드)을 찾을 수있는 인스턴스 별 환경을 정의합니다.
반응형
'programing' 카테고리의 다른 글
.NET 애플리케이션 도메인이란 무엇입니까? (0) | 2020.10.08 |
---|---|
ImageMagick을 사용하여 PDF를 PNG로 변환 (0) | 2020.10.08 |
Flask에서 응답 헤더를 어떻게 설정하나요? (0) | 2020.10.08 |
bootstrap.css와 bootstrap-theme.css의 차이점은 무엇입니까? (0) | 2020.10.08 |
Oracle에서 타임 스탬프를 삽입하는 방법은 무엇입니까? (0) | 2020.10.07 |