我定义max()
的功能如下:
max <- function(...) max(...,na.rm=T)
但它无法计算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
新max(...)
函数在主体中调用自身,而不是原始max()
函数。一个简单的解决方案是重命名函数:Max <- function(...) max(...,na.rm=T)
. 是否有其他好的选择而不重命名 - 即强制 Rmax()
在 new 的主体中运行原始功能max(...)
?