我已经检查了以前关于我的问题的答案,但我的问题似乎更复杂。以下是我的循环:
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列(每个都是数字向量)。我想将结果向量存储在新数据框中。有人能指出我的方向吗?感谢。
答案 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)
}