【发布时间】:2013-04-08 11:06:02
【问题描述】:
作为我之前的问题 - NaN is removed when using na.rm=TRUE 的后续,我正在寻找一种对我的(大型)代码库进行最小更改的解决方法。
我试过了,效果很好,但是
my.is.na <- function(x)
{
ifelse(is.na(x) & !is.nan(x), TRUE, FALSE)
}
但我想覆盖内置的is.na 函数。将我的函数重命名为 is.na 显然会导致无限递归。我有哪些选择?
PS:在所有代码中都假定is.na(NaN) 返回FALSE,所以我更愿意覆盖。
【问题讨论】:
-
如果您尝试替换
na.rm在max和min等原始函数中的工作方式,最好重写这些函数) -
我刚刚阅读了你的老问题,我想知道,如果你想在
max()电话中保留NaN,那么最大值是多少?我同意@mnel 并重写maxfunction,而不是这里计划的解决方法。 -
@mnel - 这可能是更明智的选择,因为我看到像我这样的答案有很多潜在的意外后果。
-
@thelatemail,原始函数无论如何都不会使用 is.na,所以除了潜在的意外后果之外,我认为修改 is.na 的任何解决方案都不会产生预期的后果。
-
@mnel - 看来你是对的。我检查了我的答案的敏感性,而不是特异性。我想这会让我学到东西。
标签: r overriding na