R中的数据表中缺少值

我有一个数据表document_a,其中有一个列import document_b document_b.age = 31 document_b.hello('Eric') 。当我查看列A时,似乎其中缺少486个值。但是,当我将right_date的{​​{1}}列中缺少值的行与R documentation page中的right_date一起删除时,则会删除1,156行。

我不知道为什么会这样。 似乎right_date仅与A中的缺失值一致,它将丢弃486行。

如果您想尝试https://drive.google.com/file/d/1diq9ctwen6jqfRFlV24qG8PKqdFcBqhu/view?usp=sharing

,这里是数据

R中的数据表中缺少值

wangtao_451674711 回答:R中的数据表中缺少值

问题中的对象“ A”实际上不是data.table。 na.omit()是一种通用方法,多余的参数可能会被点所吞噬。因此,尽管没有引发错误,但调用了na.omit.matrix()na.omit.data.frame(),这会忽略具有NA值的任何行。

这是S3系统的诅咒,可能会咬你。当我收到意外的输出时,首先要做的就是例如在控制台上执行na.omit(不带括号)。这将打印功能定义。如果我看到类似UseMethod("na.omit")之类的内容,则表明行为因类而异,因此,请检查对象的类。

R软件包ellipsis旨在解决这一缺陷。下面是一种阻止这种情况再次发生的方法(非常基于该自述文件!)

library(data.table)
library(ellipsis)
mat <- matrix(c(1,2,3,NA),nrow = 2)
colnames(mat) <- c("a","b")
safe_na.omit <- function(object,...) {
  check_dots_used()
  na.omit(object,...)
}

safe_na.omit(mat,col = "a")
#> Error: 1 components of `...` were not used.
#> 
#> We detected these problematic arguments:
#> * `col`
#> 
#> Did you misspecify an argument?

dt <- as.data.table(mat)
safe_na.omit(dt,cols = "a")
#>    a  b
#> 1: 1  3
#> 2: 2 NA
本文链接:https://www.f2er.com/3047734.html

大家都在问