按矩阵列名称提取矩阵列值

Extract matrix column values by matrix column name

提问人:Suraj 提问时间:4/21/2011 最后编辑:zx8754Suraj 更新时间:6/20/2018 访问量:152007

问:

是否可以从矩阵中按名称获取矩阵列?

我尝试了各种方法,但似乎没有任何效果。myMatrix["test", ]

R 矩阵 子集

评论


答:

60赞 Joris Meys 4/21/2011 #1

是的。但是,如果您想要列,请将您的“测试”放在逗号之后......

> A <- matrix(sample(1:12,12,T),ncol=4)

> rownames(A) <- letters[1:3]

> colnames(A) <- letters[11:14]
> A[,"l"]
 a  b  c 
 6 10  1 

另请参阅help(Extract)

评论

10赞 Suraj 4/21/2011
@Joris - 你知道,寻找 R 问题的答案的一个棘手方面是该语言被命名为“R”。它让谷歌为它的钱而奔波!我使用各种搜索词在谷歌上搜索了我的问题,但一无所获。当在 SO 上提出即使是简单的问题时,它也很棒,因为 SO 被谷歌很好地索引了 - 结果似乎总是弹出到顶部。希望其他初学者能找到这个=)
1赞 Joris Meys 4/21/2011
@SFun28:检查 www.rseek.org,例如这个问题:stackoverflow.com/questions/102056/...但你是对的,这里也可以问一些简单的问题,尽管如果你是新用户,我会简单地把你送到 R 简介。
0赞 Suraj 4/21/2011
@Joris - 甜蜜!rseek 将非常有用。
0赞 Frank 12/3/2016
@Joris,你可能忘了写,as.numeric( A[ ,“l”])
0赞 Joris Meys 12/6/2016
@Frank,如果该矩阵中的值不是数字并且不应转换为数字,这将是一个错误的答案。问题是获取列,而不是尝试将其转换为数字。如果您想使用该技巧转换为向量,则不必这样做。如果选择单个列或行,R 会自动减小维度。您可以避免将其用作索引运算符的额外参数,例如:drop = FALSE[A[,'l', drop = FALSE]
32赞 boraas 4/21/2011 #2
> myMatrix <- matrix(1:10, nrow=2)
> rownames(myMatrix) <- c("A", "B")
> colnames(myMatrix) <- c("A", "B", "C", "D", "E")

> myMatrix
  A B C D  E
A 1 3 5 7  9
B 2 4 6 8 10

> myMatrix["A", "A"]
[1] 1

> myMatrix["A", ]
A B C D E 
1 3 5 7 9 

> myMatrix[, "A"]
A B 
1 2