2017-11-26 16 views
2

문자열에서 quosure를 구문 분석하고 평가할 수있는 방법이 있습니까? 나는 아래의 예에서와 동일한 출력을 달성하기 위해 싶습니다문자열에서 구문 분석 및 평가

library(rlang) 
a <- 10 
quo(UQ(a) + 2 * b) 
## <quosure: global> 
## ~10 + 2 * b 

하지만 난 그렇게 요금이 시도 무엇

t <- "UQ(a) + 2 * b" 

시작 :

# Trial 1: 
quo(expr(t)) 

# Trial 2: 
parse_quosure(t) 

# Trial 3: 
quo(parse_quosure(t)) 

답변

2

expr_interp의 경우 일 수 있습니다. 문서에 따르면 "표현식에서 인용 부호없는 연산자를 수동으로 처리합니다 ...".

먼저 parse_quosure을 사용한 다음 인용 부호없는 연산자를 expr_interp을 통해 처리 할 수 ​​있습니다.

expr_interp(parse_quosure(t)) 

<quosure: global> 
~10 + 2 * b 
2

한 가지 방법은하는 것 t을 표현식으로 변환하려면 parse을 사용하고, 평가하려면 eval을 사용하십시오.

eval(parse(text = paste0("quo(",t,")"))) 
#<quosure: global> 
#~10 + 2 * b