değerleri ben vektör olacağını, öyle ki, bir zamanlar çift sayılar iki kere çoğaltılır 50
ve düzensiz sayılara 3
bir vektör üretmek için nasıl bilemiyorumÇoğalt alternatif vektör
3, 4, 4, 5, 6, 6, 7, 8, 8, 9, ..., 50, 50
değerleri ben vektör olacağını, öyle ki, bir zamanlar çift sayılar iki kere çoğaltılır 50
ve düzensiz sayılara 3
bir vektör üretmek için nasıl bilemiyorumÇoğalt alternatif vektör
3, 4, 4, 5, 6, 6, 7, 8, 8, 9, ..., 50, 50
rep()
olacak iş görmek.
x <- 3:50
rep(x, (x %% 2 == 0) + 1L)
# [1] 3 4 4 5 6 6 7 8 8 9 10 10 11 12 12 13 14 14 15 16 16 17
# [23] 18 18 19 20 20 21 22 22 23 24 24 25 26 26 27 28 28 29 30 30 31 32
# [45] 32 33 34 34 35 36 36 37 38 38 39 40 40 41 42 42 43 44 44 45 46 46
# [67] 47 48 48 49 50 50
x %% 2 == 0
x
unsurları da olan gösteren mantıksal bir vektör sağlar. TRUE
ve FALSE
ve FALSE
arasındaki tamsayı değerleri sırasıyla 1
ve 0
olduğu için, x %% 2 == 0
1'e eklendiğinde, rep()
numaralı times
argümanı için gereken vektör bize verir.
Golf oynuyorsak, onu rep(x, (!x %% 2) + 1L)
'a kısaltabiliriz.
Bu yöntemin, orijinal vektörümüz sıralı değilse de yararlı olacağını unutmayın ve yine de çift değerlerin çoğaltılmasını istiyoruz. geri dönüşüm kullanma
v <- c(1, 2, 4, 3, 6)
rep(v, (!v %% 2) + 1L)
# [1] 1 2 2 4 4 3 6 6
, biraz manuel yol: Hepimizin değerlerin bir vektör ve birlikte hatta numaralarının vektör birleştirebilirsiniz
x <- 3:50
sort(c(x, x[c(FALSE, TRUE)]))
:
sort(c(3:50, 2:25*2))
ve biraz daha kodlanmış: 'rep (3:50, rep (1: 2, 24))' – lmo