[Rd] Named class vector
Duncan Murdoch
murdoch@dunc@n @end|ng |rom gm@||@com
Thu Nov 5 15:00:40 CET 2020
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?
- 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?
Comments would be welcome.
Duncan Murdoch
More information about the R-devel
mailing list