[R] where are these NAs coming from?

Sarah Goslee sarah.goslee at gmail.com
Wed Sep 19 20:07:52 CEST 2012


R doesn't know whether the missing (NA) value is 6 or not, so by
default it returns it so the user can make up her own mind.

If you're using square brackets for subsetting, you need to explicitly
handle NA cases. If using subset(), the default behavior is to remove
them.

?"["
explains this.

Sarah


On Wed, Sep 19, 2012 at 2:03 PM, Sam Steingold <sds at gnu.org> wrote:
> Thanks, Sarah, your answer is, indeed, revealing:
> --8<---------------cut here---------------start------------->8---
>> z <- data.frame(a=c(1,2,3),b=c(5,6,NA))
>> z
>   a  b
> 1 1  5
> 2 2  6
> 3 3 NA
>> z[z$b==6,]
>     a  b
> 2   2  6
> NA NA NA
> --8<---------------cut here---------------end--------------->8---
> why do I get an extra "all NA" row?
>
>
>> * Sarah Goslee <fnenu.tbfyrr at tznvy.pbz> [2012-09-19 13:54:56 -0400]:
>>
>> Well, you have no reproducible example, but I suspect either of these
>> will fix it:
>>
>> locals <- z[z$country == mycountry & !is.na(z$country),]
>>
>> locals <- subset(z, country == mycountry)
>>
>> Sarah
>>
>> On Wed, Sep 19, 2012 at 1:50 PM, Sam Steingold <sds at gnu.org> wrote:
>>> I see this:
>>> --8<---------------cut here---------------start------------->8---
>>>> length(which(is.na(z$language)))
>>> [1] 0
>>>> locals <- z[z$country == mycountry,]
>>>> length(which(is.na(locals$language)))
>>> [1] 229
>>> --8<---------------cut here---------------end--------------->8---
>>> where are those locals without the language coming from?!
>>>
>


-- 
Sarah Goslee
http://www.functionaldiversity.org




More information about the R-help mailing list