tekrarlanması:Tekrarlanan diziyi
1,1,1,2,2,2,3,3,3,4,4,4,1,1,1,2,2,2,3,3,3,4,4,4,1,1,1,2,2,2,3,3,3,4,4,4
bunu yapmanın en kolay yolu nedir? Bu gibi
tekrarlanması:Tekrarlanan diziyi
1,1,1,2,2,2,3,3,3,4,4,4,1,1,1,2,2,2,3,3,3,4,4,4,1,1,1,2,2,2,3,3,3,4,4,4
bunu yapmanın en kolay yolu nedir? Bu gibi
Tek rep
çağrıyla yapabiliriz (bir vektör değil, bir dizi anlamına varsayarak). each
ve times
parametreleri, sırasıyla ilk olarak each
yapılarak değerlendirilir.
rep(1:4, times=3, each=3)
#[1] 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4
Bu benim görüşüme göre kabul edilen cevap olmalı – Andrie
:
rep(sapply(1:4, function(x) {rep(x, 3)}), 3)
temsilcisi (x, n) X, N kez tekrar bir vektör döndürür. sapply, verilen fonksiyonu her bir elemanın 1: 4 her elemanına ayrı ayrı uygular ve her elemanı art arda 3 defa tekrarlar.
Dieter'in cevabına bir göz atmalısınız - 'her' parametresi yaptıklarınızı sapsız bir çağrı yapmaktan çok daha iyi yapar. – Dason
Veya daha basit
rep(rep(1:4,each=3),3)
Burada aperm
ile dizi işleme kullanılarak bir yöntemdir. Fikir, değerleri içeren bir dizi oluşturmaktır. Yeniden düzenleyiniz, böylece aperm
kullanarak istenen çıktıya uyuyorlar ve ardından diziyi c
ile "açınız".
c(aperm(array(1:4, dim=c(4,3,3)), c(2, 1, 3)))
[1] 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4
Bir for döngüsü hakkında düşündüm, ancak daha basit bir yolu yok mu? –