Ho seguente codice confrontando na.omit e complete.cases:quando utilizzare na.omit contro complete.cases
> mydf
AA BB
1 2 2
2 NA 5
3 6 8
4 5 NA
5 9 6
6 NA 1
>
>
> na.omit(mydf)
AA BB
1 2 2
3 6 8
5 9 6
>
> mydf[complete.cases(mydf),]
AA BB
1 2 2
3 6 8
5 9 6
>
> str(na.omit(mydf))
'data.frame': 3 obs. of 2 variables:
$ AA: int 2 6 9
$ BB: int 2 8 6
- attr(*, "na.action")=Class 'omit' Named int [1:3] 2 4 6
.. ..- attr(*, "names")= chr [1:3] "2" "4" "6"
>
>
> str(mydf[complete.cases(mydf),])
'data.frame': 3 obs. of 2 variables:
$ AA: int 2 6 9
$ BB: int 2 8 6
>
> identical(na.omit(mydf), mydf[complete.cases(mydf),])
[1] FALSE
ci sono delle situazioni in cui uno o l'altro dovrebbe essere utilizzato o efficacemente Sono i stesso?
Presumibilmente se si desidera conservare informazioni sulle osservazioni omesse, ovvero cosa viene fornito nell'attributo 'na.action'. O il fatto che 'complete.cases' restituisca un vettore logico significa che potresti fare qualcosa come' mydf [complete.cases (mydf [, 1]),] 'se tu fossi interessato solo ai valori di' NA' nella prima colonna. – nrussell
Due buone ragioni. Questa potrebbe essere una risposta piuttosto che un semplice commento. – rnso
Grazie, e fatto. – nrussell