У меня возникла проблема с созданием векторСоздать 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 с `rep()` и `seq()`
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9
с rep()
и seq()
. Может ли кто-нибудь дать мне подсказку?
У меня возникла проблема с созданием векторСоздать 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 с `rep()` и `seq()`
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9
с rep()
и seq()
. Может ли кто-нибудь дать мне подсказку?
Мы можем использовать
rep(1:5, times = 5) + rep(0:4, each = 5)
# [1] 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9
или проще (как R будет перерабатывать 1:5
автоматически):
rep(0:4, each = 5) + 1:5
# [1] 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9
Есть ли способ сделать это с помощью команды
seq
?
1:5
просто seq(1,5)
, а 0:4
является seq(0,4)
.
Ах, для тех, кто заинтересован в, мы можем также использовать outer
:
as.numeric(outer(1:5, 0:4, "+"))
Первоначальный вызов outer
формирует эту матрицу:
# [,1] [,2] [,3] [,4] [,5]
#[1,] 1 2 3 4 5
#[2,] 2 3 4 5 6
#[3,] 3 4 5 6 7
#[4,] 4 5 6 7 8
#[5,] 5 6 7 8 9
затем мы используем as.numeric
для сгладить его.
Это будет также сделать:
unlist(lapply(1:5, function(x) seq(x, 4+x, 1)))
# [1] 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9
'Кронекера (1: 5, 0: 4, "+"),' – alistaire