我已定义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)
。没有重命名-i.e还有其他好的选择吗?强制R在新max()
的主体中运行原始max(...)
函数?
答案 0 :(得分:6)
您想使用其命名空间base
:
max <- function(...) base::max(...,na.rm=T)