【问题标题】:How can I take select rows in matrix from vector in R如何从 R 中的向量中选择矩阵中的行
【发布时间】:2013-06-05 18:49:45
【问题描述】:

我有带有变量 x 的矩阵 y:

         x
 [1,]    0
 [2,]    1
 [3,]    0
 [4,]    0
 [5,]    1
 [6,]    1

我只选择了 1 的值。现在我有一个向量 z:

 2 5 6

我需要将此向量与用我的矩阵 y 选择的线匹配。这是一个例子,我有一个大数据。我试过 y[z],但这不显示行。谢谢

【问题讨论】:

  • 你少了一个逗号:y[z,]
  • 不工作,因为我需要一个新矩阵:[2,] 1 [4,] 1 [6,] 1。你明白吗?
  • 不太明白,不过如果想把向量转成矩阵,可以调用as.matrix(your_vector)

标签: r select vector matrix


【解决方案1】:

y[z,] 返回矩阵y,行z

y[z] 返回矩阵 z 的元素 y

> y <- matrix(1:12, ncol=3)
> y
     [,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
[4,]    4    8   12
> y[c(2,3),]
     [,1] [,2] [,3]
[1,]    2    6   10
[2,]    3    7   11
> y[c(2,3)]
[1] 2 3

正如 Joran 指出的那样,如果您使用的是单列矩阵,请包含 ,drop=FALSE 以确保您的输出是矩阵。

【讨论】:

  • 我认为这需要解释一下y[c(5,6)] 的作用;选择不同的矩阵也可能不会那么混乱,就像使用 matrix(12:1, ncol = 3) 一样简单
  • OP 的示例是单列,结合他们需要输出为 matrix 的评论可能表明值得一提的是著名的 @987654331 @ 功能。
  • @eddi 你做错了。你少了一个逗号。检查?Extract
  • 啊,太好了,谢谢! :) 所以记录在案m[1:3,,drop=FALSE]
  • 郑重声明,我做错的是m[1:3,drop=FALSE]
猜你喜欢
  • 1970-01-01
  • 2017-02-16
  • 2017-03-19
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多