10 非标准计算
10.1 定义
在R中不仅可以访问函数参数的值,还可以访问对参数进行计算的表达式代码,这就是非标准计算(NSE)
10.2 例子
substitute(expr, env)
捕获用来计算的表达式expr
,并用在环境env
中可能存在的可以用于替换的变量值将表达式做替换。例:
10.3 小知识点
substitute()
经常与deparse()
一起使用,deparse()
以substitute()
的结果为参数并把它转换成字符向量(substitute()
的结果是name
类型的)quote()
与substitute()
行为相同,除了它不做替换操作,quote()
与eval()
是对立的eval(expr, envir, enclos)
可以在指定环境中计算表达式,envir
参数位置不一定是环境,也可以填列表或数据框eval()
函数的第三个参数控制eval()
在环境envir
中找不到变量名时去哪里找,eval()
首先会在enclos
参数中找,再在enclos
参数的父环境中找。list2env()
可以将一个列表转换成具有显式父环境的环境,这里希望在函数的调用环境中查找。R中的
pairlist
数据类型相当于python中的dictionary