Orada parlak beyinler için başka bir sorum var (bu site çok bağımlılık yapıyor).Boş bir matris için for döngüsünün sonuçları atama
Matris üzerinde bazı simülasyonlar yapıyorum ve bu amaçla döngüler için yuva yaptım. İlki, döngü döngüsü her seferinde bir artış gösteren bir vektör oluşturur. Yuvalanmış döngü, vektörü rasgele hale getirerek, matrise ekleyerek ve yeni matris üzerindeki bazı basit özellikleri hesaplayarak simülasyonlar çalıştırıyor. (Örneğin, simülasyonlarda farklılık göstermeyen özellikler kullandım, fakat pratikte simülasyonların rasgele vektörün etkisi hakkında iyi bir fikir edinmesini istiyorum.) İç içe döngü 100 simülasyon çalıştırıyor ve sonuçta sadece Bu simülasyonların sütun araçları.
property<-function(mat){ #where mat is a matrix
a=sum(mat)
b=sum(colMeans(mat))
c=mean(mat)
d=sum(rowMeans(mat))
e=nrow(mat)*ncol(mat)
answer=list(a,b,c,d,e)
return(answer)
}
x=matrix(c(1,0,1,0, 0,1,1,0, 0,0,0,1, 1,0,0,0, 1,0,0,1), byrow=T, nrow=5, ncol=4)
obj=matrix(nrow=100,ncol=5,byrow=T) #create an empty matrix to dump results into
for(i in 1:ncol(x)){ #nested for loops
a=rep(1,times=i) #repeat 1 for 1:# columns in x
b=rep(0,times=(ncol(x)-length(a))) #have the rest of the vector be 0
I.vec=append(a,b) #append these two for the I vector
for (j in 1:100){
I.vec2=sample(I.vec,replace=FALSE) #randomize I vector
temp=rbind(x,I.vec2)
prop<-property(temp)
obj[[j]]<-prop
}
write.table(colMeans(obj), 'myfile.csv', quote = FALSE, sep = ',', row.names = FALSE)
}
Ben karşılaşmamdır sorun iç içe döngü sonuçları ile boş nesne matris içinde doldurmak için yapılması gerekenler:
İşte bazı örnek kod. obj çoğunlukla NA'ların bir vektörü olarak biter, bu yüzden sonuçları doğru bir şekilde atamadığım açıktır. Her döngü obj için pervane bir satır eklemek istiyorum ama
obj[j,]<-prop
çalışırsanız R matrisi üzerinde simgelerin yanlış bir numara olduğunu söylüyor.
Yardımlarınız için çok teşekkür ederim!
DÜZENLEMELER:, yani burada aşağıda cevap yeniden geliştirilmiş kod tamamdır :
property<-function(mat){ #where mat is a matrix
a=sum(mat)
b=sum(colMeans(mat))
f=mean(mat)
d=sum(rowMeans(mat))
e=nrow(mat)*ncol(mat)
answer=c(a,b,f,d,e)
return(answer)
}
x=matrix(c(1,0,1,0, 0,1,1,0, 0,0,0,1, 1,0,0,0, 1,0,0,1), byrow=T, nrow=5, ncol=4)
obj<-data.frame(a=0,b=0,f=0,d=0,e=0) #create an empty dataframe to dump results into
obj2<-data.frame(a=0,b=0,f=0,d=0,e=0)
for(i in 1:ncol(x)){ #nested for loops
a=rep(1,times=i) #repeat 1 for 1:# columns in x
b=rep(0,times=(ncol(x)-length(a))) #have the rest of the vector be 0
I.vec=append(a,b) #append these two for the I vector
for (j in 1:100){
I.vec2=sample(I.vec,replace=FALSE) #randomize I vector
temp=rbind(x,I.vec2)
obj[j,]<-property(temp)
}
obj2[i,]<-colMeans(obj)
write.table(obj2, 'myfile.csv', quote = FALSE,
sep = ',', row.names = FALSE, col.names=F, append=T)
}
Bununla birlikte, bu myfile sadece her bir sütunu için (bir dört satır olması gerektiği gibi, hala glitchy x), ancak bazı tekrarlanan ile 10 satır vardır. Herhangi bir fikir?
Fantastik! Bu tavsiyenin tümü için teşekkür ederim. – Laura
"append = T" ekleyerek üzerine yazma problemini düzeltebilirim. obj şimdi düzgün çalışıyor, ancak write.table üretilen dosya hala sadece bir sütun oldu. Bunu, nesnelerin colMeans nesnesiyle ikinci bir boş veri tabanı oluşturarak ve bunu bir csv dosyasına yazarak çözdüm. – Laura