>>>>> "DM" == Duncan Murdoch <murd...@stats.uwo.ca> >>>>> on Fri, 12 Jun 2009 06:09:14 -0400 writes:
DM> On 11/06/2009 5:35 PM, Stavros Macrakis wrote: >> A table without names displays like a vector: >> >> > unname(table(2:3)) [1] 1 1 1 >> >> and preserves the table class (as with unname in >> general): >> >> > dput(unname(table(2:3))) structure(c(1L, 1L), .Dim = >> 2L, class = "table") >> >> Does that make sense? R is not consistent in its >> treatment of such unname'd tables: DM> One of the complaints about the S3 object system is that DM> anything can claim to be of class "foo", even if it DM> doesn't have the right structure so that foo methods DM> work for it. I think that's all you're seeing here: DM> you've got something that is mislabelled as being of DM> class "table". The solution is "don't do that". indeed! >> In plot, they are considered erroneous input: >> >> > plot(unname(table(2:3))) Error in xy.coords(x, y, >> xlabel, ylabel, log) : 'x' and 'y' lengths differ >> >> but in melt, they act as though they have names 1:n: >> >> > melt(unname(table(2:3))) indicies value 1 1 1 2 2 1 >> >> (By the way, is the spelling error built into too much >> code to be corrected?) >> >> -s >> >> PS What is the standard way of extracting just the >> underlying vector? c(unname(...)) works -- is that what >> is recommended? DM> I would use as.numeric(), but I don't claim it's DM> standard. many months ago in a discussion about the use (and "misuse") of c() for coercing arrays/matrices to (atomic) vectors, Brian Ripley I think advertized the use of as.vector() with which I strongly agree. as.vector() here has the additional advantage of *not* transforming integer into double. Martin Maechler, ETH Zurich ______________________________________________ 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.