0
以下是我當前面臨的問題: 我有96個觀察值(行)和16個變量(列)的數據框(我們稱之爲A)。 我還有一個由16個元素(A的16個變量中的每一個的係數)組成的9列向量(來自主成分分析)的旋轉。循環R:將輸出存儲在數據框中
的PCA旋轉保存爲這樣:
ph=prcomp(home[ ,3:17], scale. = TRUE)
Home_vec=-round(ph$rotation[ ,1:9], 3)
現在,奇我已經能夠通過物體Home_vec乘我的數據幀的行之一,並輸出等於由行乘以每個9個PC列,並應用cbind。
例如,行輸入:
TEAM=c(5, 1503, 26.31, 16.2, 0.099, 33, 28, 368, 35, 15, 84, 942, 528, 33, 315)
我的新的輸出:
TEAM.1=round(TEAM*Home_vec,3)
我已經創建了一個for循環,其執行步驟,對每個96個觀察在我的數據幀。
F=function(x){
x*Home_vec
}
for(i in 1:96){
print(F(home[i,2:17]))
}
唯一的問題是 - 我努力保存輸出(這是一個96×9的數據幀)作爲一個新的對象。
任何幫助,將不勝感激, 謝謝!
Christiaan非常感謝你,這對我有效。 但是,當我在頂部爲底部的x代入等式時,它就起作用了。如果你不介意我問,究竟是什麼x <- x %>%。 [-1,-1]呢? –
編輯:我意識到,頂線是必要的,道歉。我需要對代碼重新排序:底線放在第二位。我仍然對這兩行命令計算機做什麼感到好奇。 –
在頂部,我創建了一個空數據框(1x1數據幀),然後在循環中將新行綁定到空數據框。最後一行刪除創建的空白數據框的第一行和第一列。 (在沒有最後一行的情況下運行循環,然後在運行最後一行之前查看x以查看會發生什麼) – Christiaan