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