[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