직접 조작 언어 대상
2409 단어 함수.대상R 언어SUBSTITUTE
본문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
그러나 문법 분석 을 한 표현 식 은 원본 표현 식 과 같은 값 을 구 하 는 결 과 를 얻 을 수 있 습 니 다 (정밀도 가 틀 릴 때 까지).
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
예를 들어 urlopen의 데이터 사용법데이터 매개 변수는 선택할 수 있습니다. 데이터를 추가하려면 바이트 인코딩 형식의 내용, 즉bytes 형식이면bytes () 함수를 통해 전환할 수 있습니다. 또한 이 데이터 매개 변수를 전달하면 GET 방식으로 요...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.