无法将值存储在for循环内的数字数组中

时间:2019-03-29 20:25:25

标签: r

我正在尝试使用滑动窗口将值存储到数字数组中。但是,我无法使用以下代码存储值-

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

3 个答案:

答案 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