我正在尝试使用滑动窗口将值存储到数字数组中。但是,我无法使用以下代码存储值-
d=c(1:1000)
e=0
for (i in d){
a[e]=c(i:i+10)
e=e+1
}
我希望看到-
a[1]=1 2 3 4 5 6 7 8 9 10
a[2]=2 3 4 5 6 7 8 9 10 11
答案 0 :(得分:2)
您可以先使用embed
,然后再使用apply
反转每一行
x <- 1:20
t(apply(embed(x, 10), 1, rev))
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] 1 2 3 4 5 6 7 8 9 10
# [2,] 2 3 4 5 6 7 8 9 10 11
# [3,] 3 4 5 6 7 8 9 10 11 12
# [4,] 4 5 6 7 8 9 10 11 12 13
# [5,] 5 6 7 8 9 10 11 12 13 14
# [6,] 6 7 8 9 10 11 12 13 14 15
# [7,] 7 8 9 10 11 12 13 14 15 16
# [8,] 8 9 10 11 12 13 14 15 16 17
# [9,] 9 10 11 12 13 14 15 16 17 18
#[10,] 10 11 12 13 14 15 16 17 18 19
#[11,] 11 12 13 14 15 16 17 18 19 20
这可能是相同想法的更快选择
out <- embed(x, 10)
out[, ncol(out):1]
答案 1 :(得分:1)
是否需要一个数组?以下是一个矩阵:
sapply(1:10, function(i) i:(i+10))
这可能取决于下游应用程序。如果必须是数组,请检出How to convert matrix into array?
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 2 3 4 5 6 7 8 9 10
[2,] 2 3 4 5 6 7 8 9 10 11
[3,] 3 4 5 6 7 8 9 10 11 12
[4,] 4 5 6 7 8 9 10 11 12 13
[5,] 5 6 7 8 9 10 11 12 13 14
[6,] 6 7 8 9 10 11 12 13 14 15
[7,] 7 8 9 10 11 12 13 14 15 16
[8,] 8 9 10 11 12 13 14 15 16 17
[9,] 9 10 11 12 13 14 15 16 17 18
[10,] 10 11 12 13 14 15 16 17 18 19
[11,] 11 12 13 14 15 16 17 18 19 20
答案 2 :(得分:1)
返回列表:
first <- c(0:9)
a <-lapply(1:1000, function(x) first+x)
a [1] 1 2 3 4 5 6 7 8 9 10
a [2] 2 3 4 5 6 7 8 9 10 11
a [3] 3 4 5 6 7 8 9 10 11 12