保存FOR循环中的值以进行进一步分析

时间:2019-02-10 03:33:39

标签: r

如何从以下代码中保存For循环中的值?当我插入变量“ lm5”时,它总共有两个值。当我尝试将其保存到新变量时,它仅显示最后一个值。

理想情况下,我想保存lm5,lm10,lm20以便进行另一轮IF语句分析。您能否建议如何进行?预先感谢!

even<-c(2,4)

for( i in even){
  m5<-rollmean(test[,i],5,fill=NA)
  m10<-rollmean(test[,i],10,fill=NA)
  m20<-rollmean(test[,i],20,fill=NA)
  lm5<-tail(m5[!is.na(m5)],1)
  print(lm5)
}

1 个答案:

答案 0 :(得分:2)

您可以使用一些数据结构来实现此目的。

向量

even<-c(2,4)
lm5_vector = c()
for( i in even){
  m5<-rollmean(test[,i],5,fill=NA)
  lm5_vector<-c(lm5_vector,tail(m5[!is.na(m5)],1))
}
print(lm5)

这会将每次迭代的元素存储到向量中。最后打印向量的两个元素。我们将结果存储在所谓的原子向量中。这样做的缺点是您需要为lm10,lm20等初始化一个新向量。

替代方法如下。

列表+向量

列表数据结构使我们可以用一个方便的名称存储您希望存储的所有值。列表允许我们嵌套其他数据结构。因此,我们将原子向量嵌套在列表下。

even<-c(2,4)
result_list = list(lm5 = c(),lm10 = c(),lm20 = c())
for( i in even){
  m5<-rollmean(test[,i],5,fill=NA)
  result_list$lm5<-c(result_list$lm5,tail(m5[!is.na(m5)],1))
}
print(result_list)