[R] How to replace NAs in a vector of factors?

jim holtman jholtman at gmail.com
Wed Jul 22 03:21:48 CEST 2009


Notice that three items are returned where you thought one was:

[1] FALSE  TRUE  TRUE  TRUE FALSE
> db1$olditems[db1$olditems=='']  #wait, only one item is returned?
[1]
Levels:  nuts soup
> db1[db1$olditems=='',]  #somehow this works!
  olditems prices
2            3.25
3            4.42
4            2.25
> paste('[',db1$olditems[db1$olditems==''],']') # put some characters around return values
[1] "[  ]" "[  ]" "[  ]"
>


The '[1]' was just an indication that this is the first value returned
and the other two were blanks so you did not see them.  Also "" is
just that; a blank and not NA.

On Tue, Jul 21, 2009 at 8:39 PM, Gene Leynes<gleynes+r at gmail.com> wrote:
> # Just when I thought I had the basic stuff mastered....
> # This has been quite perplexing, thanks for any help
>
>
> ## Here's the example:
>
> db1=data.frame(
>    olditems=c('soup','','','','nuts'),
>    prices=c(4.45, 3.25, 4.42, 2.25, 3.98))
> db2=data.frame(
>    newitems=c('stew','crackers','tofu','goatsmilk','peanuts'))
>
> str(db1)    #factors and prices
> str(db2)    #new names, but I want *only* the updates
>
> is.na(db1$olditems)  #a little surprising that '' is not equal to NA
> db1$olditems==''     #oh good, at least I can get to the blanks this way
> db1$olditems[db1$olditems=='']  #wait, only one item is returned?
> db1[db1$olditems=='',]  #somehow this works!
>
> #how would I get the new item names into the old items column of db1??
> # I was expecting that this would work:
> #    db1$olditems[db1$olditems=='']=
> #        db2$newitems[db1$olditems=='']
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem that you are trying to solve?




More information about the R-help mailing list