On 8/18/12, Martin Maechler <maech...@stat.math.ethz.ch> wrote: > On Sat, Aug 18, 2012 at 5:14 PM, Christian Brechbühler .... wrote: >> On Sat, Aug 18, 2012 at 11:03 AM, Martin Maechler >> <maech...@stat.math.ethz.ch> wrote:
>>> Consider this toy example, where the dataframe already has only >>> one column : >>> >>> > nv <- c(a=1, d=17, e=101); nv >>> a d e >>> 1 17 101 >>> >>> > df <- as.data.frame(cbind(VAR = nv)); df >>> VAR >>> a 1 >>> d 17 >>> e 101 >>> >>> Now how, can I get 'nv' back from 'df' ? I.e., how to get >>> >>> > identical(nv, .......) >>> [1] TRUE >>> >>> where ...... only uses 'df' (and no non-standard R packages)? >> >> >>> identical(nv, df[,1]) >> [1] TRUE > But it is not a solution in a current version of R! > though it's still interesting that df[,1] worked in some incantation of > R. My mistake! We disliked some quirks of indexing, so we've long had our own patch for "[.data.frame" in place, which I used inadvertently. In essence, it does this: result <- base::"[.data.frame"(df,,1, drop=F) if (drop && length(ncol(result) > 0) && ncol(result)==1) { save.names <- dimnames(result)[[1]] result <- result[[1]] names(result) <- save.names } That obviously violated your constraint "no non-standard R packages". I apologize. Still, maybe the behavior of getting the named column would be desirable in general? /Christian ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel