我定义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(...)?