0

20 のグループに分割されたデータセットがあります。各グループ (2 列のデータ) のデータを格納する行列はリストに格納されるため、ループ内で各セットに対して関数を実行できます。別のマトリックスで実行する可能性のある関数の出力を保存したいと思います。

たとえば、20 個のグループすべてで fitdistr() を実行する場合、関数の出力を行列に格納して、distribution[1] を呼び出してグループ 1 の結果を呼び出すことができるようにします。次のことを試しました。 :

distribution<-ls()

for(i in (1:20))
  { distribution[[i]]<-fitdistr(as.numeric(data[[i]]$Column2,"normal") }

これにより、出力が正常に保存され、次のように呼び出すことができます。

distribution[1] 

問題は、fitdistr() が 2 列のデータ (平均と標準偏差) になることです。特定のポイントの平均を呼び出すことができないことを確認しました。

names(distribtuion)
"NULL"

したがって、次のように言って、get the means を呼び出すことは明らかにできません。

distribution[1]$mean

平均値と標準偏差 (および他の分布の他のパラメーター) の傾向を探しているので、可能であれば fitdistr() の結果を何らかの方法でマトリックスに格納したいと考えています。関数を実行するときに、どうにかして平均を呼び出すことができたとしても、空のベクトルを作成してループに入力し、標準偏差について繰り返すことができます。

データを格納するのに十分な大きさの空の行列を作成することを検討しました (したがって、20 行、各グループに 1 つ、2 列、計算された値ごとに 1 つになります)。計算された平均値を列 1 に格納し、計算された標準偏差を列 2 に格納することをどのように指示するかはまだわかりません。繰り返しますが、一度に複数の出力の 1 つだけを関数に要求する問題です。 .

適用機能の 1 つも調べましたが、これらは私がやっていることには適切ではないようです。

4

1 に答える 1

0

ls() は、特定の環境内のオブジェクトを一覧表示する関数です。文字ベクトルを返します。

あなたは(おそらく)持っていることを意味しますlist()

ただし、ループ内でリストを拡大することになります。R地獄の2周目です。

代わりlapplyに、適切な関数を使用してください(どこに行きたいのかわかりにくいですがas.numeric、あなたの例では正しくありません)。

何かのようなもの..

distribution <- lapply(data, function(x) fitdistr(as.numeric(x[['Column2']]),"normal")) 
于 2013-03-14T03:50:46.543 に答える