一种检测 NaN、NA、Inf、-Inf 等的功能?

Posted

技术标签:

【中文标题】一种检测 NaN、NA、Inf、-Inf 等的功能?【英文标题】:One function to detect NaN, NA, Inf, -Inf, etc.? 【发布时间】:2011-11-23 00:17:37 【问题描述】:

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

【问题讨论】:

【参考方案1】:

你想要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

【讨论】:

请注意,is.finite(TRUE) 也会返回 TRUE @kohske:好点子。 is.finite(FALSE) 也返回 TRUE。这可能是因为 TRUEFALSE 只是整数。 True 和 false 不是整数 - 但它们将被强制转换而不会出现错误/警告消息 @hadley:我不清楚;感谢您的澄清。我指的是 R 布尔值是 C 级别的 32 位整数,而不是 is.integer(TRUE) 会返回 TRUE

以上是关于一种检测 NaN、NA、Inf、-Inf 等的功能?的主要内容,如果未能解决你的问题,请参考以下文章

在 R 的数据集中将 -inf、NaN 和 NA 值替换为零

r 用R中的0替换NA,NAN和Inf

线性模型函数 lm() 错误:外部函数调用中的 NA/NaN/Inf (arg 1)

如何消除“外部函数调用中的 NA/NaN/Inf (arg 7)”使用 randomForest 运行预测

do_one(nmeth) 中的错误:外部函数调用中的 NA/NaN/Inf (arg 1)

Error in do_one(nmeth) : NA/NaN/Inf in foreign function call (arg 1)