2016-04-13 9 views
1

私はコードを持っています。私は2つのガンマ分布でforループを行うつもりです。リストの次元のループ

形状パラメータのリストを与え、私はそれらの名前を "d"とすると、ランダムガンマ関数でd [1]とd [2]を入れます。

私はここで質問したいものを簡略化しました。 Rのiのコードd [1]を出力すると、出力は最初のベクトルになり、Rのiのコードd [2]が出力されると、出力は2番目のベクトルになります。 私はビットを失っていますが、私はdのforループを使っているとどのように反復するのでしょうか?

* 
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 
}* 

私が愚かな質問をするのは申し訳ありません。前もって感謝します。

+0

あなたの例ではxとyは何ですか? forループでdをどこで使用していますか? – user1357015

+0

あなたの質問は混乱しています。より正確には:あなたは実際に何を求めていますか?あなたのコードは望ましい出力を生成しますか?はいの場合はそのまま使用できます。 'for'ループと' * apply'関数の間のパフォーマンスの差は[無視できるか存在しません]です(http://stackoverflow.com/a/2276001/4770166)。 – RHertel

+0

上記のコードでエラーが発生していますか? –

答えて

1

Rでは、パフォーマンスが低下しているためループを避ける方がよいです。あなたがリストlapplyで開始しているので、良いスタートです:

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

適用する機能は、あなたのリストを取り、その後t.test内の2つのパラメータにガンマ関数を使用しています。結果は、各ペアに1つずつ、5つのp値のリストになります。

+0

こんにちは、ありがとう、私はまた、適用機能を読み込みます。 :) –

0

コードは正常に動作します。私は実際にここで何を求めているのかは分かりません。あなたが好きな場合、反復子を見つけるにはprintを使ってください:

for (d in List_1){ 
    print(d[1]) 
    print(d[2]) 
} 
+0

こんにちは、ありがとう、私はこれを実行して何が起こるかを観察する:) –

関連する問題