以下是我目前面临的问题: 我有一个96个观察(行)和16个变量(列)的数据框(让我们调用A)。 我还有一个包含16个元素的9个列向量(来自主成分分析)的轮换(A的16个变量中的每一个的系数)。
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的数据帧)保存为一个新对象。
任何帮助将不胜感激, 谢谢!
答案 0 :(得分: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]