R中的循环:将输出存储在数据帧中

时间:2017-01-27 19:50:33

标签: r for-loop pca

以下是我目前面临的问题: 我有一个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的数据帧)保存为一个新对象。

任何帮助将不胜感激, 谢谢!

1 个答案:

答案 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]