【问题标题】:What does na.rm=TRUE actually means?na.rm=TRUE 实际上是什么意思?
【发布时间】:2020-02-15 00:29:54
【问题描述】:

当我们的数据中有 NA 时,我们使用 na.rm=TRUE 来获得均值、模式等的正确结果。na.rm 有什么作用?我可以理解 rm 是用来删除的,我们甚至可以用它来删除变量。但是为什么我们把 na 写成小的呢? R 区分大小写?布尔值 TRUE 在这里有什么作用?

【问题讨论】:

  • 作为旁注,虽然我使用该参数来 remove 来自数据的 na 值,但有时人们可能更愿意 删除它们。例如,如果一个断言(在某些过程中)是没有丢失数据,那么我建议不应该使用na.rm=TRUE,因为在最好的情况下它(1)是一个空操作,什么都不做;但很可能(2)掩盖了输入数据假设的问题。只是一个想法。
  • 我想比当前答案更强调 na.rm 没有什么特别之处。这只是一个参数名称。许多功能采用它,并以某种方式实现它,而更多的功能却没有。新的 R 用户经常在这么多常用功能中看到它,并认为它必须在任何功能中工作,但事实并非如此。它在实现它的函数中起作用,在不实现它的函数中不起作用。每个接受 na.rm 参数的函数都可以随意解释它。

标签: r


【解决方案1】:

参数na.rm 提供了一种从数据中删除缺失值的简单方法,如果它们被编码为NA。在基础 R 中,它的标准默认值是 FALSE,这意味着 NA 不会被删除。

考虑以下包含 2 个元素的向量,其中一个是缺失值。

x <- c(1, NA)

现在,它的平均值是多少?
我们是否应该添加所有非缺失值并除以它的全长,2?或者我们应该除以NA删除后的长度,只有 1?

sum(x, na.rm = TRUE)/length(x)
#[1] 0.5
sum(x, na.rm = TRUE)/length(x[!is.na(x)])
#[1] 1

如果使用mean,则计算的是后者。

mean(x, na.rm = TRUE)
#[1] 1

【讨论】:

  • 我也想过用这个例子写一个答案——这很好。我打算添加一行 sum(x, na.rm = TRUE) / length(x, na.rm = TRUE) >> Error! 以强调并非所有常见的基本 R 函数都接受该参数——它不是无处不在的魔法。
【解决方案2】:

na.rm 是许多函数中的参数之一(你给出了一些例子)。要获取有关函数参数的信息,请运行 ?function

例如,使用mean(),运行:

?mean

为您提供您正在寻找的信息:

na.rm:一个逻辑值,指示在计算继续之前是否应去除 NA 值。

通过为这个参数提供一个逻辑值(TRUEFALSE),您可以选择在运行函数时是否剥离 NA。默认(也由mean() 文档给出)是FALSE

是的:R 区分大小写。

【讨论】:

    猜你喜欢
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多