我一直在这里磕磕绊绊而且还没有完全破解它 - 任何帮助都会非常感激。
说我有一个数据框如下
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)]
答案 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