Dear list,

I wish to modify programmatically only a few factor levels, according
to a named list. I came up with this function,

modify.levels <- function(f, modify=list()){

  ## levels that will not be changed
  names.old.levels <- setdiff(levels(f), unlist(modify))
  ## as a named list
  old.levels <- as.pairlist(names.old.levels)
  names(old.levels) <- names.old.levels
  ## union of unchanged levels and modified ones
  levels(f) <-  modifyList(old.levels, modify)
  f
}

f <- factor(LETTERS[1:4])
f2 <- modify.levels(f, list(aa = "A", cc="C"))

It seems to work, but the original order of the levels is changed.
Have I missed a better way of doing this manipulation?

Best regards,

baptiste

______________________________________________
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