2016-04-18 33 views
0

Ist es möglich, Variablen in R zu speichern ..Speichern Variablen in einer Matrix in R

I 10 * 324 fitdist ‚s berechnen haben, die jede Ausgabe dieser Funktion innerhalb einer Matrix mit der Größe gespeichert werden muss über? ist das in R möglich?

Wenn ja, wie, ich bin völlig verloren?

So habe ich versucht, ein einfaches Beispiel zu schaffen

norm_dist <- as.data.frame(matrix(nrow=3,ncol=3)) 
data(iris) 
for(i in 1:3) 
{ 
    for(j in 1:3) 
    { 
    print(i) 
    print(j) 
    if(j==1) 
    { 
     element = fitdist(data =iris$Petal.Width[1:50*i], distr = "norm") 
     norm_dist[i,j] = element 
    } 
    if(j==2) 
    { 
     element = fitdist(data =iris$Petal.Length[1:50*i], distr = "norm") 
     norm_dist[i,j] = element 
    } 
    if(j==3) 
    { 
     element = fitdist(data =iris$Sepal.Length[1:50*i], distr = "norm") 
     norm_dist[i,j] = element 
    } 
    } 

} 

Aber ich erhalte diesen Fehler

Error in `[<-.data.frame`(`*tmp*`, i, j, value = list(estimate = c(0.867771222640304, : 
    replacement element 4 is a matrix with 2 rows, needs 1 

Ich bin nicht sicher, ob ich verstehe, was es bedeutet ...

+2

Erstellen Sie ein Beispiel, das viel kleiner als 8000 * 324 ist, und es in Ihre Frage aufnehmen. –

+1

Ich versuchte, ein einfaches Beispiel zu erstellen – Lamda

+0

Daten (Iris) scheinen hinzugefügt worden zu sein Dank @ J.Down :) Es scheint ziemlich reproduzierbar jetzt .. – Lamda

Antwort

1

möchten Sie vielleicht Überprüfen Sie die ?fitdist Dokumentation unter "Wert" Abschnitt. Es erwähnt die Ausgabe von der Funktion, die eine Liste mit ein paar Komponenten ist.

Welchen dieser Werte möchten Sie in norm_dist zuweisen? Wenn Sie beispielsweise die Log-Likelihood verwenden möchten, können Sie norm_dist[i,j] = element$loglik

verwenden. Wenn Sie das gesamte Objekt speichern möchten, benötigen Sie eine Liste und nicht einen data.frame, z.

norm_dist_res <- list() 
for(i in 1:10) 
{ 
    for(j in 1:324) 
    { 
     norm_dist_res[[paste0(i,"-",j)]] <- fitdist(data=g_all_p$data[1:8000*i, j], distr="norm") 
    } 
} 
+0

Ich erhalte diesen Fehler 'Fehler in' [[<-. Data.frame' ('* tmp *', paste0 (i, "-", j), Wert = Liste (Schätzung = c (0.867771222640304,: Ersatz hat 17 rækker, Daten hat 10' – Lamda

+1

den Tippfehler behoben ... – chinsoon12

+0

Wie extrahiere ich einen einzigen Wert? – Lamda