Hi, I have the following question about creating data frames. I want to create a data frame with 2 components: a vector and a matrix.
Let me use a simple example: y <- rnorm(10) x <- matrix(rnorm(150), nrow=10) Now if I do dd <- data.frame(x=x, y=y) I get a data frame with 16 colums, but if, according to the documentation, I do dd <- data.frame(x=I(x), y=y) then str(dd) gives: 'data.frame': 10 obs. of 2 variables: $ x: AsIs [1:10, 1:15] 0.700073.... -0.44371.... -0.46625.... 0.977337.... 0.509786.... ... $ y: num 0.4676 -1.4343 -0.3671 0.0637 -0.231 ... This looks and works OK. Now, there exists a CRAN package called pls. It has a yarn data set in it. > data(yarn) > str(yarn) 'data.frame': 28 obs. of 3 variables: $ NIR : num [1:28, 1:268] 3.07 3.07 3.08 3.08 3.1 ... ..- attr(*, "dimnames")=List of 2 .. ..$ : NULL .. ..$ : NULL $ density: num 100 80.2 79.5 60.8 60 ... $ train : logi TRUE TRUE TRUE TRUE TRUE TRUE ... This looks almost the same, except the matrix component in my example has the AsIs instead of num. Is this just some older behavior of the data.frame function producing this difference? If not, how can I get my data frame (dd) to look like yarn? I read the help pages for data.frame and as.data.frame and found this paragraph If a list is supplied, each element is converted to a column in the data frame. Similarly, each column of a matrix is converted separately. This can be overridden if the object has a class which has a method for as.data.frame: two examples are matrices of class "model.matrix" (which are included as a single column) and list objects of class "POSIXlt" which are coerced to class "POSIXct". If I do > methods(as.data.frame) [1] as.data.frame.aovproj* as.data.frame.array [3] as.data.frame.AsIs as.data.frame.character [5] as.data.frame.complex as.data.frame.data.frame [7] as.data.frame.Date as.data.frame.default [9] as.data.frame.difftime as.data.frame.factor [11] as.data.frame.ftable* as.data.frame.integer [13] as.data.frame.list as.data.frame.logical [15] as.data.frame.logLik* as.data.frame.matrix [17] as.data.frame.model.matrix as.data.frame.numeric [19] as.data.frame.numeric_version as.data.frame.ordered [21] as.data.frame.POSIXct as.data.frame.POSIXlt [23] as.data.frame.raw as.data.frame.table [25] as.data.frame.ts as.data.frame.vector so it looks like there is a matrix method for as.data.frame. The question then is how can I override the default behavior for the matrix object (converting columns separately). Any hint will be appreciated, Andy __________________________________ Andy Jaworski 518-1-01 Process Laboratory 3M Corporate Research Laboratory ----- E-mail: apjawor...@mmm.com Tel: (651) 733-6092 Fax: (651) 736-3122 [[alternative HTML version deleted]] ______________________________________________ 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.