1

作为我上一个问题的后续 -使用 na.rm=TRUE 时删除了 NaN,我正在寻找一种对我的(大型)代码库进行最小更改的解决方法。

我试过这个,它有效,但是

my.is.na <- function(x)
{
   ifelse(is.na(x) & !is.nan(x), TRUE, FALSE)
}

但我想覆盖内置is.na函数。将我的函数重命名为is.na显然会导致无限递归。我有哪些选择?

PS:在所有代码中都假定is.na(NaN)返回FALSE,所以我更愿意覆盖。

4

1 回答 1

0

我不确定这是否合法,但是:

old.na <- is.na
is.na <- function(x)
{
   ifelse(old.na(x) & !is.nan(x), TRUE, FALSE)
}

这可能会违反 R 中的某些规则,并且可能会产生其他一些不良后果,但至少它的行为方式与您的想法一致......

于 2013-04-16T06:49:56.353 回答