[R] conditional replacement of character strings in vectors

David Winsemius dwinsemius at comcast.net
Sat Sep 3 03:03:29 CEST 2011

On Sep 2, 2011, at 7:51 PM, R. Michael Weylandt wrote:

> Your data frame didn't come across legibly, try sending it in plain  
> text
> using the dput() command.
> That said, I'd guess you want something like this:
> d[is.na(d$a),"a"] <- d[is.na(d$b),"b"]

One of the rare instances where I disagree with Michael. The row index  
on the right hand side must be the same as the row index on the left  
hand side.

> The idea is that is.na(d$a) selects only those rows where column "a"  
> is NA
> and then moves b values into a for only those rows.

Right, that is the idea.

> Write back with the dput() data frame if this doesn't work.
> Hope this helps,
> Michael Weylandt
> On Fri, Sep 2, 2011 at 3:51 PM, Josh Tewksbury <tewksjj at uw.edu> wrote:
>> Hello, I have a dataframe that looks like this:
>> a b  NA Honduras  China NA  NA Sudan  Japan NA  NA Mexico  NA Mexico
>> I would like to replace the NA values in column b with the non-NA  
>> values in
>> column a.  I have tried a number of techniques, (if, ifelse) but I  
>> must
>> have
>> the logic wrong.
>> Thanks
>> --
>> Josh

David Winsemius, MD
West Hartford, CT

More information about the R-help mailing list