R中如何判断变量存储的函数与原函数是否相等?
在R中检查函数对象是否相等的方法
直接用==比较函数对象会报错,因为该运算符仅支持原子类型(如数值、字符)或列表,而函数属于专用的函数类型,无法通过==直接对比。以下是几种可行的检查方法:
使用
identical()函数(推荐)
这是R中检查两个对象是否完全一致的标准方法,会对比对象的类型、属性、内存指向等所有特征,适用于绝大多数场景:a <- dplyr::mutate identical(a, dplyr::mutate)执行后会返回
TRUE,因为a是对dplyr::mutate函数的直接引用,二者完全一致。对比函数体(适用于检查实现逻辑)
如果需要确认两个函数的代码实现是否相同,可以用body()提取函数体后再对比:identical(body(a), body(dplyr::mutate))这种方法适合自定义函数的对比,或者需要验证函数逻辑未被修改的场景。
检查内存地址
通过address()查看对象的内存地址,若地址相同则说明是同一个对象实例:address(a) == address(dplyr::mutate)对于直接赋值得到的函数引用,该方法也会返回
TRUE。
内容的提问来源于stack exchange,提问作者Eisen
相关产品推荐
相关产品推荐

