我正在尝试删除 R 中的 NA。我尝试复制一个简单的示例,我在网上找到了多个地方,但得到了意外的输出。我通过网上搜索找不到错误。我做错了什么?
我使用的是 R 版本 4.3.2。我已经重新启动 R 并清除了全局变量(并再次重新启动 R),并且通过我尝试的任何操作始终得到此结果。
a <- c(1,2,NA,3,4,NA,5,6)
b<- na.omit(a)
b
输出是
[1] 1 2 3 4 5 6
attr(,"na.action")
[1] 3 6
attr(,"class")
[1] "omit"
我期望得到输出 1 2 3 4 5 6
我发现我可以使用
b <- a[!(is.na(a))]
,但很好奇为什么通常建议的 na.omit 不起作用。
您do在输出中获得了预期的值。我认为您误解的是
attr(,"na.action")
和 attr(,"class")
只是附加到其中包含六个非 NA
数字的数字向量的属性。如果您这样做 b+1
,您将获得递增的值:
b + 1
# [1] 2 3 4 5 6 7
# attr(,"na.action")
# [1] 3 6
# attr(,"class")
# [1] "omit"
如果你确实想使用
na.omit
并抢先删除属性,你可以这样做:
attributes(b) <- NULL
b
# [1] 1 2 3 4 5 6