用于识别有问题的数据类型的函数

时间:2012-10-24 22:02:43

标签: r

我花了几个小时调试一些R代码,却发现错误是由于我在计算过程中潜入的Inf造成的。我检查了NA,但没想过检查Inf

我写了以下函数来帮助防止将来出现这种情况:

is.bad <- function(x){
  is.na(x) | is.nan(x) | is.infinite(x)
}

>     is.bad(c(NA, NaN, Inf, -Inf, 0, 1, 1000, 1e6))
[1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE

R中是否还有其他特殊数据类型应该注意?

3 个答案:

答案 0 :(得分:4)

!is.finite(x)相当于您的is.bad(x);它会检测Inf(以及-Inf),NANaN值。

答案 1 :(得分:1)

根据您的工作情况,is.null()可能在某些时候也可以为您节省大量时间。很难说一般。

答案 2 :(得分:1)

这取决于你想要做什么。最近,当我为一堆数据子集创建线性模型时,我遇到了类似的问题。什么对我有用,在可能的情况下得到系数,并且NA而不是程序停止错误消息是:

Coef <- ifelse(is.numeric(try(coef(lm(y~x, data=DF)), silent=T)), coef(lm(y~x+0, DF)), NA)

所以我会得到一个载体

 [1] 2.3 4.3 5.4 6.2 2.8 NA 3.2

正确间隔,而不是错误信息。