3

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

4

1 回答 1

7

You want to call the original max function using its namespace, base:

max <- function(...) base::max(...,na.rm=T)
于 2013-05-28T10:19:21.073 回答