2017-11-01 13 views
0

df(自由度)ベクトルと確率ベクトルpを持つ分位関数を使ってt分布データを生成したい。forループなしでt分布データを生成する

p <- c(0.01, 0.001, 0.0001) 
dof <- c(seq(1, 5, by = 1)) 

次のようにループを使用してジョブを実行できます。

for (i in dof) {(qt(1-p, df=i))} 

forループを使用しないと、私はlapply関数を使用できますが、リストとして出力します。

val <- lapply(dof, function(d) qt(1-p, df=d)) 

どのようにループを回避し、出力をdata.frameとして取得できますか。

編集:

sapply結果を使用しては正しいですが、フォームをトランスポーズ:

val <- sapply(dof, function(d) qt(1-p, df=d)) 
      [,1]  [,2]  [,3]  [,4]  [,5] 
[1,] 31.82052 6.964557 4.540703 3.746947 3.364930 
[2,] 318.30884 22.327125 10.214532 7.173182 5.893430 
[3,] 3183.09876 70.700071 22.203742 13.033672 9.677566 
+2

なぜループを回避しようとしていますか、すべての値が数値のときにdata.frameを取得しようとしているのはなぜですか? –

+0

私はベクトル操作を行うことができます。実際のデータセットはかなり大きいです。 – ravi

+1

リストは、行列と同じベクトルです。 data.frameを操作することは、大きなデータセットに関してはあまり効率的ではありません。編集に関しては、 't'にラップしてください。 –

答えて

1

が、この仕事はしませんか?

val <- sapply(dof, function(d) qt(1-p, df=d)) 
+0

質問の編集を参照してください。転調形式で出ることはできますか?私は手動で移調することができますが、実際のデータセットはかなり大きいので、避けたいのです。 – ravi

関連する問題