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データフレーム)を保存しようとしています。
何か助けていただければ幸いです。 ありがとうございます!
非常にありがとう、これは私のために働いた。 しかし、私は一番下の方程式のxの方程式を上の方程式に代入するとうまくいった。あなたが私に尋ねる気にならないなら、正確にx <- x %>%をします。 [-1、-1]そうですか? –
EDIT:私は、トップラインが必要であることを認識し、謝罪しました。私はコードの順序を変更する必要がありました。最終行を2番目に入れました。私はこれらの2つの行がコンピュータに何を指示しているのか、まだ不思議です。 –
先頭に空のデータフレーム(1x1データフレーム)を作成し、ループ内で新しい行を空のデータフレームにバインドします。最後の行は、作成された空のデータフレームの最初の行と最初の列を削除するだけです。 (最後の行を使わずにループを実行してから最後の行を実行する前にxを見て何が起こるかを確認してください) – Christiaan