我正在尝试对矩阵进行子集化:
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
我做错了什么?
答案 0 :(得分:2)
删除高于subset
行数的windows
的值:
windows[subset$V1[subset$V1 <= nrow(windows)], ]