所以我知道如果你有:
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[]
谢谢!
答案 0 :(得分:2)
这里的关键是当“[]”(实际上是一个函数)的参数是你提供的两列矩阵时,结果将是一个向量,其中第一列指定行,第二列指定操作矩阵中的列。这是该语言的“功能”(我可能会添加一个非常方便的功能)。
参数可能包含也可能不包含行和列的所有可能组合,因此结果不可预测地成为具有相同维度的矩阵。形式:m[] <- m[ z[1:4, ] ]
将产生结果,但也会产生警告。您应该查看结果,然后努力了解正在发生的事情。