检测NaN、NA、Inf、-Inf等的函数?

49

在R中,是否有一个函数可以确定一个值是否为NANaNInf-Inf或其他不是格式正确的数字?

1个回答

66
你需要 is.finite
> is.finite(NA)
[1] FALSE
> is.finite(NaN)
[1] FALSE
> is.finite(Inf)
[1] FALSE
> is.finite(1L)
[1] TRUE
> is.finite(1.0)
[1] TRUE
> is.finite("A")
[1] FALSE
> is.finite(pi)
[1] TRUE
> is.finite(1+0i)
[1] TRUE

1
请注意,is.finite(TRUE) 也会返回 TRUE - kohske
1
@kohske:好的观点。is.finite(FALSE)也会返回TRUE。这可能是因为TRUEFALSE只是整数。 - Joshua Ulrich
9
真和假不是整数 - 但它们将被强制转换而不会出现错误或警告信息。 - hadley
5
@hadley: 我表达不够清楚,谢谢您澄清。我指的是在C语言级别上,R中的布尔值是32位整数,而不是is.integer(TRUE)会返回TRUE - Joshua Ulrich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接