我刚刚遇到一个简单的问题,但我不明白发生了什么.我使用R来删除NA值并计算简单的汇总统计信息,但is.na和na.rm给了我不同的答案.
如果我有一个矢量
> test<-c(NA, NA,NA, 1,2,3,4)
Run Code Online (Sandbox Code Playgroud)
我用na.rm = TRUE计算平均值,得到正确的c(1,2,3,4)平均值.
> mean(test, na.rm=TRUE)
[1] 2.5
Run Code Online (Sandbox Code Playgroud)
如果我重复计算,这次用!is.na()删除NA值,我得到了错误的答案.
> mean(!is.na(test))
[1] 0.5714286
Run Code Online (Sandbox Code Playgroud)
!is.na(测试)给了我正确的值,但R如何估算这里的平均值?
> !is.na(test)
[1] FALSE FALSE FALSE TRUE TRUE TRUE TRUE
Run Code Online (Sandbox Code Playgroud)