On Sun, Sep 25, 2011 at 9:40 AM, David Winsemius <dwinsem...@comcast.net> wrote:

> (I do not know why Sarah Goslee is telling you that you cannot access
> matrices with column names. You clearly can do so. Maybe I misread her
> statement.)

I suppose I should have said that you can't access matrices via column
name *like that*. A data frame is a list, so it can be accessed in the
way in which the original querent was trying. And the latter is by no
means the "wrong way" to do so, merely a way that cannot be used
with matrices. David points out the correct way to access columns of
a matrix by name.

But do note that the default results of x["a"] and x[,"a"] differ, even if x is
a data frame.

> x <- cbind(a=1:3, b=11:13)
> class(x)
[1] "matrix"
> x["a"]
[1] NA
> x[,"a"]
[1] 1 2 3
>
> x <- data.frame(x)
> class(x)
[1] "data.frame"
> x["a"]
  a
1 1
2 2
3 3
> x[,"a"]
[1] 1 2 3
> x[["a"]]
[1] 1 2 3
>
> class(x["a"])
[1] "data.frame"
> class(x[,"a"])
[1] "integer"
> class(x[["a"]])
[1] "integer"
>
> class(x[,"a", drop=FALSE])
[1] "data.frame"
>

There are several entirely valid ways to access named columns, and
they're all slightly different. Which is guaranteed to confuse the
new R user, really.

Sarah

-- 
Sarah Goslee
http://www.functionaldiversity.org

______________________________________________
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.

Reply via email to