将R设置为包含缺失数据 - 如何将`table()`的`useNA ="ifany"`选项设置为默认值?

Ric*_*ico 3 default analysis r missing-data

在许多情况下,了解丢失的数据至关重要,忽略它们会严重影响您的分析.

因此我想将useNA = "ifany"默认设置为table().理想地类似于options(stringsAsFactors = FALSE)

我发现下面有一个丑陋的黑客,但它必须更好,没有定义一个功能.

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)
}
Run Code Online (Sandbox Code Playgroud)

Kon*_*lph 5

那么你需要定义一个函数1,但你可以重用现有的名称(并使定义更精简):

table = function (..., useNA = 'ifany') base::table(..., useNA = useNA)
Run Code Online (Sandbox Code Playgroud)

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

我们使用...允许传递任意参数,并且我们给出useNA所需的默认值'ifany'.在函数内部,我们只需调用"真实" table函数.但是为了避免自称,我们指定它所在的命名空间:base.我们只是将所有的论点都没有触及.


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