2017-01-27 9 views
0

現在私が直面している問題は次のとおりです。 96個の観測(行)と16個の変数(列)のデータフレーム(Aと呼ぶ)があります。 私は16要素(Aの16個の変数のそれぞれの係数)の(Principal Components Analysisからの)9個の列ベクトルのローテーションも持っています。Rのループ:データフレームの出力を格納

PCA回転が等の保存されます。今

ph=prcomp(home[ ,3:17], scale. = TRUE) 
Home_vec=-round(ph$rotation[ ,1:9], 3) 

、単独IオブジェクトHome_vecによって自分のデータフレームの行の1つを乗算することができたし、出力することによって行を乗算に等しいです。 9つのPC列のそれぞれに、cbindを適用します。例えば

、行入力:

TEAM=c(5, 1503, 26.31, 16.2, 0.099, 33, 28, 368, 35, 15, 84, 942, 528, 33, 315) 

マイ新しい出力:私は私のデータに96回の観測のそれぞれについて、この手順を実行するためのループを作成した

TEAM.1=round(TEAM*Home_vec,3) 

フレーム。

F=function(x){ 
    x*Home_vec 
} 

for(i in 1:96){ 
    print(F(home[i,2:17])) 
} 

唯一の問題は、新しいオブジェクトとして出力(96 x 9データフレーム)を保存しようとしています。

何か助けていただければ幸いです。 ありがとうございます!

答えて

1

ループで次の操作を実行してください。

私はdplyrパッケージを使用しています。

x <- "" %>% data.frame 

for(i in 1:96){ 
y <- F(home[i,2:17])) 
x <- bind_rows(x,y) 
} 

x <- x %>% .[-1,-1] 
+0

非常にありがとう、これは私のために働いた。 しかし、私は一番下の方程式のxの方程式を上の方程式に代入するとうまくいった。あなたが私に尋ねる気にならないなら、正確にx <- x %>%をします。 [-1、-1]そうですか? –

+0

EDIT:私は、トップラインが必要であることを認識し、謝罪しました。私はコードの順序を変更する必要がありました。最終行を2番目に入れました。私はこれらの2つの行がコンピュータに何を指示しているのか、まだ不思議です。 –

+0

先頭に空のデータフレーム(1x1データフレーム)を作成し、ループ内で新しい行を空のデータフレームにバインドします。最後の行は、作成された空のデータフレームの最初の行と最初の列を削除するだけです。 (最後の行を使わずにループを実行してから最後の行を実行する前にxを見て何が起こるかを確認してください) – Christiaan

関連する問題