2

所以我知道,如果你有:

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[]

谢谢!

4

1 回答 1

2

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

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

于 2013-04-18T19:56:46.017 回答