按矩阵列名提取矩阵列值

58

如何通过名称从矩阵中获取列?

我尝试了各种方法,例如myMatrix["test", ],但似乎都无法正常工作。

2个回答

59
是的。但如果你想让列之后出现“test”,请将其放在逗号后面...
> 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
@Joris - 你知道,寻找关于R语言的问题答案中的一个棘手方面是它的名称叫做"R"。这使得谷歌费尽心思!我使用各种搜索词汇在谷歌上搜索了我的问题,但却一无所获。当简单的问题在SO上被提出时,这很棒,因为SO被谷歌很好地索引,结果总是能够快速浮现到最上面。希望其他初学者也能从中受益 =) - Suraj
1
@SFun28:请查看www.rseek.org和例如这个问题:https://dev59.com/KHVD5IYBdhLWcg3wE3No 但你是对的,即使是简单的问题也可以在这里问,尽管如果你是新用户,我会直接把你送到R介绍页面。 - Joris Meys
@Joris - 太棒了!rseek会非常有用。 - Suraj
@Joris,你可能忘记写成.as.numeric(A[,"l"])了。 - Frank
@Frank 如果矩阵中的值不是数字,就不能将其转换为数字,这将是错误的答案。问题是要获取列,而不是尝试将其转换为数字。如果您想使用该技巧转换为向量,则不必这样做。如果选择单个列或行,则R会自动减少维数。您可以使用drop = FALSE作为索引运算符[的额外参数来避免这种情况,例如:A[,'l', drop = FALSE] - Joris Meys

32
> 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 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接