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

时间:2013-05-28 10:17:02

标签: r function scope

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

1 个答案:

答案 0 :(得分:6)

您想使用其命名空间base

调用原始max函数
max <- function(...) base::max(...,na.rm=T)