Prof Brian Ripley wrote: > It's quite intentional, as it is the documented behaviour of data.frame: > > Objects passed to 'data.frame' should have the same number of > rows, but atomic vectors, factors and character vectors protected > by 'I' will be recycled a whole number of times if necessary. > >> data.frame(a = structure(1, label="foo"), b = c(2, 3)) > Error in data.frame(a = structure(1, label = "foo"), b = c(2, 3)) : > arguments imply differing number of rows: 1, 2 > > It is safe to replicate a vector without any attributes, but not safe to > replicate this 'a': you will have to do it yourself if you know it is > safe. How is anyone to know you meant 'label' to apply to the whole > vector and not the single element of the vector (if you did)?
Thanks Brian for clarifying that. Is there a way to use a specially written as.data.frame.labelled function to do this? I assume there is no way to use I() here. Frank > > > On Thu, 9 Nov 2006, Frank E Harrell Jr wrote: > >> I have a problem when one of the vectors in a list needs to be >> replicated to have the appropriate length, and an attribute is present. >> >> > w <- list(a=1, b=2:3) >> > as.data.frame(w) >> a b >> 1 1 2 >> 2 1 3 >> >> > attr(w$a,'label') <- 'foo' >> > as.data.frame(w) >> Error in data.frame(a = 1, b = c(2, 3), check.names = TRUE) : >> arguments imply differing number of rows: 1, 2 >> >> I usually use the Hmisc label function to make a variable of class >> 'labelled' and define as.data.frame.labelled as as.data.frame.vector, >> but that also fails here. Any help appreciated. -Frank >> >> > sessionInfo() >> R version 2.2.1, 2005-12-20, i486-pc-linux-gnu [also fails in 2.4.0] >> >> attached base packages: >> [1] "methods" "stats" "graphics" "grDevices" "utils" >> "datasets" >> [7] "base" >> >> > -- Frank E Harrell Jr Professor and Chair School of Medicine Department of Biostatistics Vanderbilt University ______________________________________________ R-help@stat.math.ethz.ch 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.