【问题标题】:Need to iterate for loop over multiple data sets in R需要迭代循环遍历 R 中的多个数据集
【发布时间】:2023-02-21 00:33:06
【问题描述】:

我一直难以找到一种简洁的方法来在 R 中的多个数据帧上迭代单向方差分析。 我使用的所有数据框都具有相同的格式,但我试图弄清楚如何将它们全部放入列表中,然后在数据中选择一个变量以选择方差分析。我尝试使用的代码在下面,我需要一些指导,了解如何实际设置 for 循环以遍历数据帧列表,以节省我一遍又一遍地重写/粘贴相同代码的时间我需要改变的是数据框。

df<- list(data.1, data.2, data.3, etc)
#treatment and output are examples of my column titles
for(i in df)
{ 
oneway <- aov(df[i[Treatment]] ~ output, data = df[i]) }

我期待它能让我在列表的数据框中选择一列,但它一直没有工作。 我是 r 的新手,欢迎任何和所有建议!

【问题讨论】:

    标签: r dataframe statistics anova


    【解决方案1】:

    我相信有更优雅的解决方案,但如果你想坚持使用for循环,你可以尝试下面的方法,我使用默认的iris数据在所有列中为Species运行aov()

    # data
    data.1 <- data.2 <- data.3 <- iris
    ll <- list(data.1, data.2, data.3)
    
    oneway <- vector(mode = "list", length = length(ll))
    
    for(x in seq_along(ll)){
      for (y in names(ll[[x]])[-5]){
        oneway[[x]][[y]] <- aov(ll[[x]][[y]] ~ ll[[x]][["Species"]], data = ll[[x]])
      }
    }
    

    结果是一个嵌套列表,其中外部列表​​的长度为 3(数据集数),每个内部列表的长度为 4(列数减去 Species)。

    【讨论】:

      猜你喜欢
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多