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). 名前を変更せずに、他の良いオプションはありますmax()max(...)?

4

1 に答える 1

7

名前空間を使用して元の max 関数を呼び出したい場合base:

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