n > 2
uzunluğundaki ikili bir vektörün olası tüm kombinasyonlarını oluşturmak için 1
' satırdaki s 2
.01 veya 2 "1" s uzunluğundaki bir ikili vektörün olası tüm kombinasyonlarını yaratın
n=4
, cevap olurdu:
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
1 0 0 0
1 0 0 1
1 0 1 0
1 1 0 0
Bu işler ancak büyük (n> 20) n alır gibi yoğun ve yavaş çok bellek alır:
n <- 4
m <- expand.grid(rep(list(0:1),n))
m <- m[rowSums(m)<3,]
Örneğin
Bunu daha verimli bir şekilde nasıl yapabilirim?
Yanıt: Marat Talipov en ve akrun çözümleri kombinasyonuna göre
*
n=4
z=rep(0,n)
rbind(unname(z), t(combn(0:n,2, FUN=function(k) {z[k]=1;z})))
@akrun Sorunum, n'nin büyüdükçe, 'expand.grid' gereksiz yere sonraki adımda kaldırılacak satırlar oluşturması olduğunu düşünüyorum. Tercihen, bu vektörler ilk sırada oluşturulmayacaktır. – verigolfer
Yeni başlayanlar için, "Azalt (" + ", m)", birkaç satır için 'rowSums (m)' –
'dan çok daha etkilidir;) kütüphane (çoklu); n <- 10; nn <- 1: n; m <- contrMat (nn, type = "Tukey"); m [m == - 1] = 1 – ckluss