【问题标题】:the [] operator in matrices R矩阵 R 中的 [] 运算符
【发布时间】:2013-04-18 19:45:03
【问题描述】:

所以我知道如果你有:

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[z] 得到什么?哪里不一致?请记住,在 R 中,matrix 只是具有尺寸的 vector...
  • 好吧,我期待一个矩阵。我知道它会返回一个向量。但我没有从向量中创建一个新矩阵,例如:matrix(vector, nrow, ncol),而是找到了这个有用的运算符。我只是找不到任何文档
  • 可以通过?Extract?"[" 找到“[”的文档。如果你想避免其他常见的陷阱,应该仔细研究,我建议至少完整阅读 5 个。

标签: r matrix indexing


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-03-31
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 2021-01-15
    • 2018-11-23
    相关资源
    最近更新 更多