Невозможно сохранить значения в числовом массиве внутри цикла for - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь сохранить значения в числовом массиве, используя скользящее окно.Однако я не могу сохранить значения, используя следующий код -

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 ]

2 голосов
/ 29 марта 2019

Вы можете использовать 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 голос
/ 29 марта 2019

Возвращение списка:

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

1 голос
/ 29 марта 2019

Должен ли он быть массивом? Следующее составляет матрицу:

sapply(1:10, function(i) i:(i+10))

Это может работать в зависимости от последующего приложения. Если это должен быть массив, посмотрите Как преобразовать матрицу в массив?

     [,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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...