2016-04-13 7 views
1

Ich habe einen Code, und ich werde eine for-Schleife auf zwei Gamma-Verteilungen tun.for Schleife mit Dimension einer Liste

Gegeben die Liste der Formparameter, und ich nenne sie "d", dann setze ich d [1] und d [2] in die zufällige Gammafunktion ein.

Ich habe vereinfacht, was ich hier fragen möchte. wenn ich d [1] in R codiere, ist Ausgabe der erste Vektor, während, wenn ich in R den Code d [2] code, Ausgabe der zweite Vektor ist. Ich habe ein bisschen verlieren, dann wie wird es iterieren, wenn ich for-Schleife für d?

* 
List_1 <- list(c(4,16),c(16/9,4),c(1,16/9),c(.64,1),c(4/9,.64)) 
for (d in List_1) ##first parameter is for gamma.1, second is for gamma.2 
{ 
x<-rgamma(25,d[1],1) 
y<-rgamma(25,d[2],1) 

t<-t.test(x,y)$p.value 
}* 

Es tut mir leid, wenn ich eine dumme Frage stelle. Danke im Voraus.

+0

Was sind x und y in Ihrem Beispiel? Wo wird d in der for-Schleife verwendet? – user1357015

+0

Ich bin verwirrt über Ihre Frage. Genauer: Was fragen Sie eigentlich? Produziert Ihr Code die gewünschte Ausgabe? Wenn ja, können Sie es so behalten, wie es ist. Der Unterschied in der Leistung zwischen einer for-Schleife und den apply-Funktionen ist [vernachlässigbar oder nicht vorhanden] (http://stackoverflow.com/a/2276001/4770166). – RHertel

+0

Erhalten Sie einen Fehler im obigen Code? –

Antwort

1

In R ist es besser, For-Schleifen wegen ihrer schlechten Leistung zu vermeiden. Da Sie mit einer Liste beginnen werden, ist lapply ein guter Start:

lapply(List_1, FUN=function(x){t.test(rgamma(25,x[1],1), rgamma(25,x[2],1))$p.value}) 

Die Anwendung der Liste Funktion nimmt und verwendet dann die Gamma-Funktion auf die 2 Parameter innerhalb des t.test. Das Ergebnis ist eine Liste der fünf p-Werte, einer für jedes Paar

+0

Hallo, danke, ich werde auch die Anwendungsfunktion durchlesen. :) –

0

Ihr Code läuft gut. Ich bin mir eigentlich nicht sicher, was Sie hier fragen. Sie können einfach print verwenden, um die Iterativen zu finden, wenn das ist, was Sie wollen, wie:

+0

hi, danke, ich werde das laufen lassen um zu beobachten was passiert :) –