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

问题描述 投票:0回答:2

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

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列(每个都是数字向量)。我想将结果向量存储在新数据框中。有人能指出我的方向吗?谢谢。

r loops
2个回答
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)

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)
}
© www.soinside.com 2019 - 2024. All rights reserved.