Hi Kevin, Joshua, Many thanks for this additional information.
On 10 Nov 2014, at 22:21, Kevin Ushey wrote:
I believe the question here is related to the sign on the compact row names representation: why is it sometimes `c(NA, <positive>)` and sometimes `c(NA, <negative>)` -- why the difference in sign?
It was indeed the difference in sign that Kevin highlights that was puzzling me
To the best of my knowledge, older versions of R used the signed-ness of compact row.names to differentiate between different 'types' of data.frames, but that should no longer be necessary. Unless there is some reason not to, I believe R should standardize on one representation, and consider it a bug if the other is seen.
[snip, Joshua wrote ]
Look at ?.row_names_info (which is mentioned in the See Also section of ?row.names) and its type argument.
The first are "automatic". The second are a compact form of 1:10, as mentioned in ?row.names. I'm not certain of the root cause/reason, but the second object will not have "automatic" rownames because you have subset it with a non-missing 'i'.
Quoting ?.row_names_info for
.row_names_info(x, type = 1L)
Currently type = 0 returns the internal "row.names" attribute (possibly NULL), type = 2 the number of rows implied by the attribute, and type = 1 the latter with a negative sign for ‘automatic’ row names.
.row_names_info(df2)
[1] 10
.row_names_info(df)
[1] -10 So indeed the first case is marked as automatic, the second not. Thanks again, Greg. -- Gregory Jefferis, PhD Tel: 01223 267048 Division of Neurobiology MRC Laboratory of Molecular Biology Francis Crick Avenue Cambridge Biomedical Campus Cambridge, CB2 OQH, UK http://www2.mrc-lmb.cam.ac.uk/group-leaders/h-to-m/g-jefferis http://jefferislab.org http://flybrain.stanford.edu ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel