[英]How are results of complete.cases() and data[is.na(data)] <- 0 different?
[英]Difference between complete.cases and !is.na
我剛剛發現這個新函數在我看來是改進版的!is.na,可能包裝成一個apply(df, 1)
。 我是正確還是以下:
> a<-c(1,2,4,NA,6,8)
> identical(complete.cases(a), !is.na(a))
[1] TRUE
它並不總是如此?
對於原子向量, complete.cases
和is.na
將是相同的。 對於更復雜的對象,情況並非如此。
例如,對於data.frame is.na.data.frame
將返回與輸入相同維度的邏輯矩陣。
test < - data.frame(a,b = 1)
is.na(test)
# a b
# [1,] FALSE FALSE
# [2,] FALSE FALSE
# [3,] FALSE FALSE
# [4,] TRUE FALSE
# [5,] FALSE FALSE
#[6,] FALSE FALSE
complete.cases(test)
# [1] TRUE TRUE TRUE FALSE TRUE TRUE
讓我們采用如下的向量r1和矩陣/表r2並解釋結果
> r1
[1] 11.3 10.4 NA 11.7 10.8 11.7 10.1 9.8 12.1 1.5 1.8
> r2
speed mxPH mnO2
60 medium 6.60 11.3
61 medium 6.50 10.4
62 medium 6.40 NA
63 high 7.83 11.7
64 high 7.57 10.8
65 high 7.19 11.7
66 high 7.44 10.1
67 high 7.14 9.8
68 high 7.00 12.1
69 medium 7.50 1.5
70 medium 7.50 1.8
is.na和complete.cases對向量的工作方式相同
> **is.na(r1)**
[1] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
> **complete.cases(r1)**
[1] TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
現在讓我們看看兩個命令對二維數據的影響
正如你所看到的那樣is.na對個人價值采取了行動,但是完成了
> **is.na(r2)**
speed mxPH mnO2
60 FALSE FALSE FALSE
61 FALSE FALSE FALSE
62 FALSE FALSE TRUE
63 FALSE FALSE FALSE
64 FALSE FALSE FALSE
65 FALSE FALSE FALSE
66 FALSE FALSE FALSE
67 FALSE FALSE FALSE
68 FALSE FALSE FALSE
69 FALSE FALSE FALSE
70 FALSE FALSE FALSE
> **complete.cases(r2)**
[1] TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.