如何将循环结果存储在R中的数据框中

时间:2017-12-21 02:48:46

标签: r loops

我已经检查了以前关于我的问题的答案,但我的问题似乎更复杂。以下是我的循环:

for(i in 2:45)
{
    abs(meta1[,i]-median(meta1[,i], na.rm=T))/(mad(meta1[,i], constant 
= 1, na.rm=T)*1.483)
}

meta1是我的数据框架。我想在我的数据框中将for循环应用于第2列到第45列(每个都是数字向量)。我想将结果向量存储在新数据框中。有人能指出我的方向吗?感谢。

2 个答案:

答案 0 :(得分:3)

初始化list,将每次迭代中的值存储在list元素中,最后cbind将其存储为matrix

lst <- setNames(vector('list', 43), 2:45)
for(i in 2:45)
{
 lst[[i]] <-  abs(meta1[,i]-median(meta1[,i], na.rm=T))/(mad(meta1[,i], 
                constant = 1, na.rm=T)*1.483)
 }

do.call(cbind, lst)

答案 1 :(得分:2)

您没有提供示例数据。这使得这个猜测有效。但你可能会这样做:

meta2 <- meta1 
for(i in 2:45)
{
    meta2[,i] <- abs(meta1[,i]-median(meta1[,i], na.rm=T))/(mad(meta1[,i], constant = 1, na.rm=T)*1.483)
}