2016-05-20 8 views
0

私は10000列(SNPs頻度)のdfを持っています。私は、非反復ベクトルでシミュレーション(因子分析)を行う必要があります。これを行うには、列のサブセットを10のグループに分けて要素分析を実行する必要があります。たとえば、1:10、11:20の列。 21:30手動でこれを指定するには年月がかかるので、私はそれを行う簡単なスクリプトが必要です。 私はこれを書いたが、うまくいかないようだ。どのくらい反復を開始して停止するかをRに指示する方法を理解できません。dfの列の逐次群にわたるRを用いた因子分析

ind=seq(1,(ncol(df)-10),by=10) 

for (i in ind) { start=i;end=i+9; rez = factanal(df,factors=1, start:end) } 

答えて

1

ほんの少しのポインタ:

groups <- seq(from=1, to=10000, by=10) 

これは、グループの各要素のために、あなたは0:9のようなものを追加することができ、そして、10のグループにあなたの列を分割するのに有用です。

> 1 + 0:9 
[1] 1 2 3 4 5 6 7 8 9 10 

これは、データフレームのサブセット化に使用できます。例えば

for(i in groups){ 
    your_function(dat[, i + 0:9]) 
} 

は、対応するデータを使用して関数を実行します。関数の出力を適切に保存してください。リスト内の出力を保存するために

lapply(groups, function(x) your_function(dat[, x + 0:9])) 

のように、lapplyコールにそれをラップすることが有用であり得ます。

これはあなたの質問に対する答えかもしれませんが、これは長期的にもっと役立つと思うので、私がやることを追加してください:カラムをループする代わりに、私はmelt長いフォーマット、新しい変数として10のグループを示すインデックスを作成し、その変数をグループ化変数としてdplyrgroup_by()操作と組み合わせてグループ化変数として使用します。

+0

ありがとうございます!それはトリックを行うようだ! –

+0

うれしい私は助けることができます。私は、あなたがこれらのグループに対してより多くの操作を行う必要がある場合に備えて考える価値のある小さなコメントを追加しました。 – coffeinjunky

関連する問題