>>>>> Duncan Murdoch writes: > The source to the noquote() function looks like this: > noquote <- function(obj, right = FALSE) { > ## constructor for a useful "minor" class > if(!inherits(obj,"noquote")) > class(obj) <- c(attr(obj, "class"), > if(right) c(right = "noquote") else "noquote") > obj > }
> Notice what happens with right = TRUE: >> x <- noquote("a", right = TRUE) >> x > [1] a >> class(x) > right > "noquote" > The class vector for x is named. The print method pays attention to the > name, so we get different behaviour for a class of "noquote" and a class > of c(right = "noquote"). > I had never noticed a named class vector before, and it raised some > questions for me: > - Is this used anywhere else? Not that I'd be aware of: I think MMae is the expert here. > - Are names preserved in all the operations normally done on a class > vector? (As far as I can see they are, but maybe I've missed something.) > - Is it a good idea to encode a string value worth of information in the > name, rather than setting the class to something like c("noquote", > "right") instead? My preference would be to have unnamed class vectors, so that the names could perhaps eventually be used to store the name of the package which owns the class. For noquote, I guess you'd want something like c("noquote_right", "noquote") Best -k > Comments would be welcome. > Duncan Murdoch > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel