【问题标题】:Set R to include missing data – How can is set the `useNA="ifany"` option for `table()` as default?设置 R 以包含缺失的数据——如何将 `table()` 的 `useNA="ifany"` 选项设置为默认值?
【发布时间】:2014-03-10 13:24:49
【问题描述】:

在许多情况下,意识到丢失的数据至关重要,而忽略它们会严重影响您的分析。

因此,我想将useNA = "ifany" 设置为table() 的默认值。理想情况下类似于options(stringsAsFactors = FALSE)

我在下面发现了一个丑陋的 hack,但它必须做得更好并且没有定义函数。

https://stat.ethz.ch/pipermail/r-help/2010-January/223871.html

tableNA<-function(x) {
  varname<-deparse(substitute(x))
  assign(varname,x)
  tabNA<-table(get(varname),useNA="always")
  names(attr(tabNA,"dimnames"))<-varname
  return(tabNA)
}

【问题讨论】:

  • tableNA &lt;- function(...) table(..., useNA="ifany")?
  • 不定义新函数?

标签: r default analysis missing-data


【解决方案1】:

您确实需要定义一个函数1,但您可以重用现有名称(并使定义更简洁):

table = function (..., useNA = 'ifany') base::table(..., useNA = useNA)

这将使新功能在旧名称下可用 - 但仅在您的代码中,因此它是“安全的”(即它不会更改包对 table 的使用)。

我们使用... 来允许传递任意参数,并为useNA 提供所需的默认值'ifany'。在函数内部,我们只调用“真正的”table 函数。但是为了避免调用我们自己,我们指定了它所在的命名空间:base。而且我们只是原封不动地传递所有参数。


1 看看table 的源代码——它在设置参数时不查询任何选项,因此无法通过选项确定该参数的设置.

【讨论】:

  • 您能否简要介绍一下您的代码中发生了什么或为什么这种语法有效?
  • 我也建议&lt;- 保持一致性。
  • @Rico 我建议= 保持一致。我曾经使用&lt;- 直到几周前,但真的没有理由这样做。我会用解释更新答案。
  • 啊,我期待{},但它们是隐含的。
  • @Rico {} 在 R 中仅用于一个目的:将多个表达式分组并将它们视为一个。您永远不需要在单个表达式周围使用括号(实际上我强烈建议不要在这种情况下使用它们)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
相关资源
最近更新 更多