직접 조작 언어 대상

직접 조작 언어 대상
본문http://www.biosino.org/R/R-doc/R-lang/Direct-manipulation-of-language-objects.html#Direct-manipulation-of-language-objects
수정, 호출, 표현 식, 함수 에 사용 할 수 있 는 세 가지 언어 대상 이 있 습 니 다.이런 인식 에 근거 하여 우 리 는 호출 대상 을 집중 적 으로 토론 한다.'미 구 치 표현 식' (unevaluated expressions) 이 라 고 부 르 는 대상 이다. 비록 이 용 어 는 좀 당 혹 스 럽 지만.호출 대상 을 얻 는 가장 직접적인 방법 은 표현 식 매개 변 수 를 quote 함수 에 부여 하 는 것 입 니 다. 예 를 들 어
 > e1 <- quote(2 + 2)
 > e2 <- quote(plot(x, y))

매개 변 수 는 값 을 구하 지 않 았 고 결 과 는 간단하게 매개 변수 로 해석 되 었 습 니 다.대상 e1 과 e2 는 나중에 eval 로 값 을 구하 거나 간단하게 데이터 로 사용 할 수 있다.이것 은 e2 대상 의 모델 이 왜 "call" 인지 분명 하 다. 왜냐하면 일부 매개 변 수 를 이용 하여 함수 plot 를 호출 했 기 때문이다.그러나 e1 은 실제 적 으로 이중 매개 변 수 를 호출 하 는 이원 연산 자 + 와 똑 같은 구조 가 있다.이 사실은 아래 의 예 를 통 해 더욱 분명하게 보 여줄 수 있다.
 > quote("+"(2, 2))
 2 + 2

호출 대상 의 분량 은 목록 과 유사 한 문법 으로 접근 할 수 있 으 며, as. list 와 as. call 로 목록 과 상호 변환 할 수 있 습 니 다.
 > e2[[1]]
 plot
 > e2[[2]]
 x
 > e2[[3]]
 y

키워드 매개 변수 가 일치 할 때 키 워드 는 목록 의 태그 로 사용 할 수 있 습 니 다.
 > e3 <- quote(plot(x = age, y = weight))
 > e3$x
 age
 > e3$y
 weight

앞의 예 에서 대상 의 모든 분량 을 호출 하 는 모드 는 "name" 입 니 다.호출 대상 에 있 는 식별 자 는 확실히 이 렇 습 니 다. 그러나 호출 대상 의 분량 은 임의의 형식의 상수 일 수 있 습 니 다. 비록 이 호출 이 성공 적 으로 실 행 될 때 첫 번 째 분량 은 함수 나 다른 호출 대상 이 대응 하 는 하위 표현 식 이 가장 좋 습 니 다.패턴 이름 의 대상 은 as. name 으로 문자열 을 통 해 만 들 수 있 기 때문에 e2 대상 을 다음 과 같이 수정 할 수 있 습 니 다.
 > e2[[1]] <- as.name("+")
 > e2
 x + y

하위 표현 식 이 자신 이 호출 한 간단 한 분량 임 을 설명 하기 위해 아래 의 예 를 고려 하 십시오.
 > e1[[2]] <- e2
 > e1
 x + y + 2

모든 입력 한 괄호 는 분 석 된 표현 식 에서 보 호 됩 니 다.이들 은 단일 매개 변수 함수 호출 방식 으로 보 여 주 므 로 4 - (2 - 2) 접두사 방식 에서 '-' (4, '(' - '(2, 2)) 로 변 합 니 다. 값 을 구 하 는 과정 에서 (조작 자 는 그 매개 변수 만 되 돌려 줍 니 다.
이것 은 좀 불행 합 니 다. 그러나 사용자 의 입력 을 동시에 보호 하고 가장 간단 한 형식 으로 저장 하 며 문법 분석 한 표현 식 을 해석 할 때 같은 표현 식 의 해석 기 / 문법 분석 기 를 되 돌 릴 수 있 도록 하 는 것 은 쉬 운 일이 아 닙 니 다. 하기 어렵 기 때문에 R 의 해석 기 는 거 스 를 수 없습니다. 마찬가지 로 문법 분석 기 는 안 됩 니 다. 아래 와 같 습 니 다.보다
 > deparse(quote(c(1, 2)))
 [1] "c(1, 2)"
 > deparse(1:2)
 [1] "c(1, 2)"
 > quote("-"(2, 2))
 2 - 2
 > quote(2 - 2)
 2 - 2

그러나 문법 분석 을 한 표현 식 은 원본 표현 식 과 같은 값 을 구 하 는 결 과 를 얻 을 수 있 습 니 다 (정밀도 가 틀 릴 때 까지).

좋은 웹페이지 즐겨찾기