选择矩阵/数据帧的列n和行m,其中n和m基于另一个向量

时间:2014-09-26 06:24:41

标签: r

我一直在这里磕磕绊绊而且还没有完全破解它 - 任何帮助都会非常感激。

说我有一个数据框如下

data = data.frame((matrix(1:40, ncol = 10)))

    X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
  1  1  5  9 13 17 21 25 29 33  37
  2  2  6 10 14 18 22 26 30 34  38
  3  3  7 11 15 19 23 27 31 35  39
  4  4  8 12 16 20 24 28 32 36  40

现在,对于我的新数据集的第一行,我只想要来自第2行和第4列:第6列的数据,我的新数据集的第2行我希望数据来自行1列7:9的数据,用于行我的新数据集中的3个我想要第2行第1列和第4行我想要第4行第2列4:4

所以我基本上想要一个看起来像

的小型新数据子集
14 18 22
25 29 33
2  6  10 
8  12 16 

我希望为每行恢复的列,我可以将其定义为像这样的矩阵

columns = matrix(c(4:6,7:9,1:3,2:4), nrow = 4, byrow = TRUE)

      [,1] [,2] [,3]
[1,]    4    5    6
[2,]    7    8    9
[3,]    1    2    3
[4,]    2    3    4

我要从数据中恢复的行是

 rows = c(2,1,2,4)

我在下面尝试了以下不成功的任何解决方案将不胜感激?

data[rows, columns]
data[cbind(rows,columns)]

1 个答案:

答案 0 :(得分:3)

您可以使用矩阵整数索引来对矩阵进行子集化并创建一个新矩阵:

 matrix(dat[cbind(rows,as.vector(columns))],nrow=length(rows))

#       [,1] [,2] [,3]
# [1,]   14   18   22
# [2,]   25   29   33
# [3,]    2    6   10
# [4,]    8   12   16