矩阵R中的[]运算符

时间:2013-04-18 19:45:04

标签: r matrix indexing

所以我知道如果你有:

m = matrix(1:9, 3,3)
z = as.matrix(expand.grid(1:3, 1:3))

你做了

m[z] 
# you get back 1 2 3 4 5 6 7 8 9

但如果你这样做

m[] = m[z]
# You get back a matrix..

我对这个[]运算符的作用感到有些困惑?为什么m[][z]m[z][]之类的东西不会返回矩阵?以及如何让它返回矩阵而不将其分配给变量m[]

谢谢!

1 个答案:

答案 0 :(得分:2)

这里的关键是当“[]”(实际上是一个函数)的参数是你提供的两列矩阵时,结果将是一个向量,其中第一列指定行,第二列指定操作矩阵中的列。这是该语言的“功能”(我可能会添加一个非常方便的功能)。

参数可能包含也可能不包含行和列的所有可能组合,因此结果不可预测地成为具有相同维度的矩阵。形式:m[] <- m[ z[1:4, ] ]将产生结果,但也会产生警告。您应该查看结果,然后努力了解正在发生的事情。