矩阵R中的[]算子

矩阵R中的[]算子,r,matrix,indexing,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[] 谢谢 这里的关键是,当“[](实际上是一个

所以我知道如果你有:

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


谢谢

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


参数可能包含行和列的所有可能组合,也可能不包含,因此结果不可能是合理的相同维度的矩阵。表格:
m[]您希望从
m[z]
得到什么?矛盾在哪里?记住,在R中,矩阵
只是一个有维度的向量……我希望是矩阵。我知道它会返回一个向量。但是,我没有用向量创建一个新的矩阵,比如:
矩阵(vector,nrow,ncol)
,而是发现了这个有用的操作符。我只是在上面找不到任何文档“[”的文档可以通过
?Extract
?“[”
找到。如果您想避免其他常见的陷阱,应该仔细研究,我建议您至少阅读5篇完整的文章。