通过另一个矩阵中的值对矩阵进行子集

时间:2012-09-17 16:42:42

标签: r

我正在尝试对矩阵进行子集化:

windowSize <- 60
windows <- embed(1:nrow(datatsr), windowSize)

head(windows):

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17]   [,18]
[1,]   60   59   58   57   56   55   54   53   52    51    50    49    48    47    46    45    44    43
[2,]   61   60   59   58   57   56   55   54   53    52    51    50    49    48    47    46    45    44
[3,]   62   61   60   59   58   57   56   55   54    53    52    51    50    49    48    47    46    45
[4,]   63   62   61   60   59   58   57   56   55    54    53    52    51    50    49    48    47    46
[5,]   64   63   62   61   60   59   58   57   56    55    54    53    52    51    50    49    48    47
[6,]   65   64   63   62   61   60   59   58   57    56    55    54    53    52    51    50    49    48

dim(windows)
[1] 3291   60

按值(V1列实际上是我想要包含在上面windows矩阵中的行号):

头(子集):

   V1
1  67
2  89
3 111
4 133
5 155
6 176 

dim(subset)
[1] 152   1

range(subset)
[1]   67 3351

我希望输出矩阵只包含subset矩阵的V1列中存在的行号,而不是其他行。

例如:

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17]   [,18]
[1,]  126   125   124   123  122  121   120   119   118    117    116    115    114    113    112    111    110    109

其中subset[,1]中的第一个值是126到109之间的序列 - windows矩阵的第67行中出现的序列。等等...

我试过了:

window=windows[subset[,1],]

Error: subscript out of bounds

或:

window=subset(windows,windows%in%subset[,1])

Error in subset.matrix(windows, windows %in% subset[, 1]) : 
(subscript) logical subscript too long

我做错了什么?

1 个答案:

答案 0 :(得分:2)

删除高于subset行数的windows的值:

windows[subset$V1[subset$V1 <= nrow(windows)], ]