错误:评估嵌套太深:无限递归/选项(表达式=)?

Ali*_*Ali 2 scope r function

我已经定义max()了如下函数:

max <- function(...) max(...,na.rm=T)
Run Code Online (Sandbox Code Playgroud)

但它无法计算max(1:5)以下错误:Error: evaluation nested too deeply: infinite recursion / options(expressions=)?

观察结果可以traceback()识别问题:

88: max(..., na.rm = T) at PositionMeth.R#1521
87: max(..., na.rm = T) at PositionMeth.R#1521
86: max(..., na.rm = T) at PositionMeth.R#1521
85: max(..., na.rm = T) at PositionMeth.R#1521
84: max(..., na.rm = T) at PositionMeth.R#1521
Run Code Online (Sandbox Code Playgroud)

max(...)函数在正文中调用自身,而不是原始max()函数.一个简单的解决方案是重命名函数:Max <- function(...) max(...,na.rm=T).没有重命名是否有其他好的选择 - 强迫R max()在新的主体中运行原始功能max(...)

Jam*_*mes 6

您想使用其命名空间调用原始max函数base:

max <- function(...) base::max(...,na.rm=T)
Run Code Online (Sandbox Code Playgroud)