>>>>> "WD" == William Dunlap <wdun...@tibco.com> >>>>> on Wed, 25 Aug 2010 17:31:27 -0700 writes:
WD> Should there be a [[<-.factor() that either throws WD> an error or acts like [<-.factor() to avoid making WD> an illegal object of class factor? Yes, one or the other. Note that both `[<-` and `[[<-` are "Primitive" and do some "informal dispatch" in addition to the formal method dispatch, so there's no need for an explicit '[[<-.factor' method definition. For factors, it seems rational and "expectable" that double bracket behaves as single bracket when *one* element is assigned. z[[2:3]] <- c("Two, Three") however should continue to give an error. Martin Maechler, ETH Zurich >> z <- factor(c("Two","Two","Three"), levels=c("One","Two","Three")) >> z WD> [1] Two Two Three WD> Levels: One Two Three >> str(z) WD> Factor w/ 3 levels "One","Two","Three": 2 2 3 >> z[[2]] <- "One" >> str(z) # the .Data part is now character WD> Factor w/ 3 levels "One","Two","Three": 2 One 3 >> z WD> [1] <NA> <NA> <NA> WD> Levels: One Two Three >> z[2] <- "One" WD> Error in class(x) <- cx : adding class "factor" to an invalid object WD> Bill Dunlap WD> Spotfire, TIBCO Software WD> wdunlap tibco.com WD> ______________________________________________ WD> R-devel@r-project.org mailing list WD> https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel