ifelse() often has problems constructing the right type of return value.

if you want to keep the data as a factor (with its existing levels)
use x[condition] <- value instead of ifelse(condition, value, x).  E.g.,
   > x <- factor(c("Large","Small","Small","XLarge"),
levels=c("Small","Med","Large","XLarge"))
   > x
   [1] Large  Small  Small  XLarge
   Levels: Small Med Large XLarge
   > XLarge2Large <- function(x) { x[x=="XLarge"] <- "Large" ; x }
   > XLarge2Large(x)
   [1] Large Small Small Large
   Levels: Small Med Large XLarge
instead of things like
   > ifelse(x=="XLarge", "Large", x)
   [1] "3"     "1"     "1"     "Large"

If you don't care about the factor levels, then convert x to a character vector.

Bill Dunlap
TIBCO Software
wdunlap tibco.com


On Sat, Sep 27, 2014 at 10:13 PM, Jeff Newmiller
<jdnew...@dcn.davis.ca.us> wrote:
> Not reproducible, ball in your court. However, in the meantime, my suggestion 
> is to not do that. Convert to character before you alter the factor, then 
> convert back when you are done.
> ---------------------------------------------------------------------------
> Jeff Newmiller                        The     .....       .....  Go Live...
> DCN:<jdnew...@dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
>                                       Live:   OO#.. Dead: OO#..  Playing
> Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
> /Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
> ---------------------------------------------------------------------------
> Sent from my phone. Please excuse my brevity.
>
> On September 27, 2014 9:49:41 PM PDT, Kate Ignatius <kate.ignat...@gmail.com> 
> wrote:
>>Quick question:
>>
>>I am running the following code on some variables that are factors:
>>
>>dbpmn$IID1new <- ifelse(as.character(dbpmn[,2]) ==
>>as.character(dbpmn[,(21)]), dbpmn[,20], '')
>>
>>Instead of returning some value it gives me this:
>>
>>c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1))
>>
>>Playing around with the code, gives me some kind of variation to it.
>>Is there some way to get me what I want.  The variable that its
>>suppose to give back is a bunch of sampleIDs.
>>
>>Thanks!
>>
>>______________________________________________
>>R-help@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.
>
> ______________________________________________
> R-help@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.

______________________________________________
R-help@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.

Reply via email to