这个可重复的示例是我的代码的一个非常简化的版本:

x <- c(NaN, 2, 3)

#This is fine, as expected
max(x)
> NaN

#Why does na.rm remove NaN?
max(x, na.rm=TRUE) 
> 3

对我来说, NA (缺失值)和NaN (不是数字)是两个完全不同的实体,为什么na.rm去除NaN 我如何忽略NA而不是NaN

ps:我在Windows7上使用的是64位R版本3.0.0。

编辑:经过一些研究,我发现is.na也为NaN返回true! 这是我迷茫的原因。

is.na(NaN)
> TRUE

===============>>#1 票数:7 已采纳

这是一个语言决定:

> is.na(NaN)
[1] TRUE

is.nan区分:

> is.nan(NaN)
[1] TRUE
> is.nan(NA)
[1] FALSE

所以你可能需要同时打电话。

===============>>#2 票数:3

函数中的na.rm参数通常使用is.na()或类似函数。
因为is.na(NaN) == TRUE ,然后你得到你正在观察的行为。

现在应该将 NaN视为NA吗? 这是一个不同的问题;)


解决这个问题的最好方法是明确告诉R如何处理NaN一个例子:

ifelse(any(is.nan(x)), NaN, min(x, na.rm=TRUE))

  ask by Nishanth translate from so

未解决问题?本站智能推荐:

2回复

特殊使用colSums(),仅当缺少1个或更少的时候na.rm = TRUE

我需要总结的一些列的data.frame与说的规则,一列是求和以NA如果超过一个观察缺少NA如果只有1或更低失踪了,无论是要进行求和。 说我有一些这样的数据, 然后我应用我的规则,并对缺失的NA少于2的列求和。 所以我得到这样的东西。 我玩过colSums(dfn, na
4回复

是否可以将na.rm全局设置为TRUE?

对于诸如max之类的命令,默认将na.rm选项设置为FALSE 。 我理解为什么这通常是个好主意,但我想暂时将其关闭-例如在会议期间。 每当有选项时,我如何要求R设置na.rm = TRUE ? 我发现 但这不起作用。 我知道我可以为我编写的每个函数设置na.rm=TRUE选
2回复

rollapply na.rm = TRUE给出0值,而不是NA

我有一个简单的问题,我似乎无法在google,stackoverflow或stackexchange上找到答案。 我目前正在使用rollapply的示例来查找包含NA的某些值的总和。 例如: 输出: 看起来不错,但是有两次连续有3个NA。 和功能将NA交换为0。 不幸的是
1回复

在计算中位数时如何将na.rm = TRUE传递给sapply?

我创建了一个包含3个变量的数据帧“杀手”。 虽然整个存在NA值,但数据是数字的。 我的目标是计算3个变量中每个变量的均值。 返回: 我知道na.rm参数是一种忽略NA值的方法。 由于在R返回的内容中存在na.rm = FALSE ,因此可以假设有一种方法可以在上面的代码
1回复

na.rm和is.na给出不同的答案

我只是遇到一个简单的问题,但我不知道发生了什么。 我正在使用R删除NA值并计算简单的汇总统计信息,但是is.na和na.rm给了我不同的答案。 如果我有向量 我用na.rm = TRUE计算平均值,我得到c(1,2,3,4)的正确平均值。 如果我重复计算,这次用!is.n
1回复

na.rm和转换相关的警告

今天我试着完成最后的R-study练习,但是我失败了。 我不允许你展示我学术界的准确说明,但你可以帮我解决我在采购后得到的警告。 他们的意思是什么? 什么不合适? 我知道,这个问题很模糊,但这是唯一的问题。 我相信它的“Aufgabe 3”和“Aufgabe 4” 这是我的意见:
2回复

为什么colSums中出现错误(x,na.rm = T):R中的'na.rm'参数无效

我尝试计算我的数据x的每列的总和。 但我总是遇到这个错误 为什么na.rm参数在这种情况下不起作用? 困惑...
1回复

data.table 1.8.x mean()函数自动删除NA?

今天我发现我的程序中有一个错误,因为data.table自动删除NA表示mean 例如: 这是预期的行为吗?
2回复

R:为什么平均值(NA,na.rm = TRUE)返回NaN

当使用所有NA的向量估计均值时,如果na.rm = TRUE我们将得到一个NaN 。 为什么会这样,这是有缺陷的逻辑,还是我想念的东西? 当然使用NA比使用NaN更有意义吗? 下面的快速示例
1回复

使用mapply时忽略NA

我有以下数据集: 我正在使用以下代码来转换经纬度,并使用以下代码来获取位置: 但是我收到以下错误: Error: is.numeric(location) && length(location) == 2 is not TRUE 请让我知道我要去哪里了。