Aşağıdaki kodu, bana göre oldukça karmaşık bir desen içeren bir matris oluşturmak için aşağıya yazdım. Bu durumda, bitmiş matriste deneme ve hata ile 136 satır olduğunu tespit ettim.R: bilinmeyen satır sayısı olan bir matris oluşturmak
Önceden matris satırlarının sayısını hesaplamak için bir işlev yazabilirim, ancak işlev biraz karmaşık olabilir. Bu örnekte matristeki satır sayısı = ((4 * 3 + 1) + (3 * 3 + 1) + (2 * 3 + 1) + (1 * 3 + 1)) * 4.
Matris ifadesindeki satır sayısını sabitlemeden R'de matris oluşturmanın kolay ve verimli bir yolu var mı? Başka bir deyişle, R döngüleri için gerektiğinde R'nin bir matrise yalnızca bir satır eklemesini sağlamanın kolay bir yolu var mı?
Her geçişte döngüleri kullanarak rbind kullanan bir çözüm sundum, ama biraz sarsılmış gibi görünüyor ve çok daha kolay bir çözüm olup olmadığını merak ediyordum.
Bu soru önceki bir soruyla gereksiz olduğunda özür dilerim. Benzer bir soruyu bu sitedeki arama özelliğini kullanarak veya bugün bir internet arama motoru kullanarak bulamadım, yine de geçmişte benzer bir soruya rastladım. Aşağıda, biri rbind kullanan diğeri de nrow = 136'yı önceden ayarlamak için deneme ve hata kullandığım 2 örnek kod örneği verilmiştir.
Önerileriniz için teşekkür ederiz.
v1 <- 5
v2 <- 2
v3 <- 2
v4 <- (v1-1)
my.matrix <- matrix(0, nrow=136, ncol=(v1+4))
i = 1
for(a in 1:v2) {
for(b in 1:v3) {
for(c in 1:v4) {
for(d in (c+1):v1) {
if(d == (c+1)) l.s = 4
else l.s = 3
for(e in 1:l.s) {
my.matrix[i,c] = 1
if(d == (c+1)) my.matrix[i,d] = (e-1)
else my.matrix[i,d] = e
my.matrix[i,(v1+1)] = a
my.matrix[i,(v1+2)] = b
my.matrix[i,(v1+3)] = c
my.matrix[i,(v1+4)] = d
i <- i + 1
}
}
}
}
}
my.matrix2 <- matrix(0, nrow=1, ncol=(v1+4))
my.matrix3 <- matrix(0, nrow=1, ncol=(v1+4))
i = 1
for(a in 1:v2) {
for(b in 1:v3) {
for(c in 1:v4) {
for(d in (c+1):v1) {
if(d == (c+1)) l.s = 4
else l.s = 3
for(e in 1:l.s) {
my.matrix2[1,c] = 1
if(d == (c+1)) my.matrix2[1,d] = (e-1)
else my.matrix2[1,d] = e
my.matrix2[1,(v1+1)] = a
my.matrix2[1,(v1+2)] = b
my.matrix2[1,(v1+3)] = c
my.matrix2[1,(v1+4)] = d
i <- i+1
if(i == 2) my.matrix3 <- my.matrix2
else my.matrix3 <- rbind(my.matrix3, my.matrix2)
my.matrix2 <- matrix(0, nrow=1, ncol=(v1+4))
}
}
}
}
}
all.equal(my.matrix, my.matrix3)
Bu 'R Inferno' Daire 2'nin konusudur http://www.burns-stat.com/pages/Tutor/R_inferno.pdf Sürekli rbinding veya cbinding önlemek için haklısınız. –