I'm using 1.9.0 on Windoze 2k and I created a numeric matrix and used colnames() to give it some column names, but if I try to select a column using matrixname$validname I get a null return but if I use matrixname[,4] it works fine. Looking at the help I think this is because a matrix is not a recursive structure and I think it's saying I shouldn't be surprised nor attempt this. I'm in the process of transferring all my stats work to R having used a mixture of SPSS, S and SAS (and snippets of other things) over the years so sorry if I'm being dumb but this surprised me and I'd love a kindly explanation as I thought indexing a matrix in this way was something I did regularly (I think the last time was actually using it on a dataframe though) and I also think it would be useful and produce more readable code if I could. Can some kindly soul explain? TIA, Chris
You can access a column of a dataframe using $ but not a matrix. That's just how it is. You can access a column of a matrix via its column name using, for example > m <- matrix(1:12, 4, 3) > colnames(m) <- c("a", "b", "c") > m[, "b"] [1] 5 6 7 8 -roger chris1 wrote:> I'm using 1.9.0 on Windoze 2k and I created a numeric matrix and used > colnames() to give it some column names, but if I try to select a > column using matrixname$validname I get a null return but if I use > matrixname[,4] it works fine. Looking at the help I think this is > because a matrix is not a recursive structure and I think it's saying > I shouldn't be surprised nor attempt this. > > I'm in the process of transferring all my stats work to R having used > a mixture of SPSS, S and SAS (and snippets of other things) over the > years so sorry if I'm being dumb but this surprised me and I'd love a > kindly explanation as I thought indexing a matrix in this way was > something I did regularly (I think the last time was actually using it > on a dataframe though) and I also think it would be useful and produce > more readable code if I could. > > Can some kindly soul explain? > > TIA, > > Chris > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html >
chris1 <chris1 at psyctc.org> writes:> I'm using 1.9.0 on Windoze 2k and I created a numeric matrix and used > colnames() to give it some column names, but if I try to select a > column using matrixname$validname I get a null return but if I use > matrixname[,4] it works fine. Looking at the help I think this is > because a matrix is not a recursive structure and I think it's saying > I shouldn't be surprised nor attempt this. > > I'm in the process of transferring all my stats work to R having used > a mixture of SPSS, S and SAS (and snippets of other things) over the > years so sorry if I'm being dumb but this surprised me and I'd love a > kindly explanation as I thought indexing a matrix in this way was > something I did regularly (I think the last time was actually using it > on a dataframe though) and I also think it would be useful and produce > more readable code if I could. > > Can some kindly soul explain?As Roger indirectly indicated in his response, you probably want to use data frames and not matrices to store your data sets. In the S language the data frame is analogous to the SAS data set.
as.data.frame(matrixname)$validname chris1 <chris1 <at> psyctc.org> writes: : : I'm using 1.9.0 on Windoze 2k and I created a numeric matrix and used : colnames() to give it some column names, but if I try to select a : column using matrixname$validname I get a null return but if I use : matrixname[,4] it works fine. Looking at the help I think this is : because a matrix is not a recursive structure and I think it's saying : I shouldn't be surprised nor attempt this. : : I'm in the process of transferring all my stats work to R having used : a mixture of SPSS, S and SAS (and snippets of other things) over the : years so sorry if I'm being dumb but this surprised me and I'd love a : kindly explanation as I thought indexing a matrix in this way was : something I did regularly (I think the last time was actually using it : on a dataframe though) and I also think it would be useful and produce : more readable code if I could. : : Can some kindly soul explain? : : TIA, : : Chris : : ______________________________________________ : R-help <at> stat.math.ethz.ch mailing list : https://www.stat.math.ethz.ch/mailman/listinfo/r-help : PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html : :