对于仅循环保存最终值

时间:2019-12-09 05:10:57

标签: r for-loop

for(i in 1:32)
{
  columns <- data.frame(names(data_anova_tr[i]))
  bartletsrez <- (bartlett.test(data_anova_tr[,i]~data_anova_tr$Treatment_str))
  bart_pval <-cbind(data.frame(bartletsrez$p.value),columns)
}

我要在此处运行的for循环仅保存最后一列中的值(bartlett测试p val的结果)。我如何确保它记录了每个单个值([i] val)。

2 个答案:

答案 0 :(得分:2)

@camille指出,您应该增加bart_pval而不是在每次迭代时重新分配它。

因此,像这样修改您的代码应该可以解决您的问题:

bart_pval <- NULL
for(i in 1:32)
{
  columns <- data.frame(names(data_anova_tr[i]))
  bartletsrez <- (bartlett.test(data_anova_tr[,i]~data_anova_tr$Treatment_str))
  bart_pval <-cbind(bart_pval,data.frame(bartletsrez$p.value),columns)
}

答案 1 :(得分:0)

您不需要循环。这样的事情应该起作用:

cols <- colnames(data_anova)[1:32]  # You only need [1:32] if there are more than 32 cols
pval <- sapply(1:32, function(i) bartlett.test(data_anova_tr[,i]~data_anova_tr$Treatment_str)$p.value)
bart_pval <- data.frame(cols, pval)