簡體   English   中英

complete.cases和!is.na之間的區別

[英]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.casesis.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM