首页 > 解决方案 > R为数据框列表创建一个循环

问题描述

我目前有一个由大约 80 多个数据框组成的列表,我想做的是为列表中的每个单独的数据框循环一段代码,而不是单独命名每个数据框,或者将它们拆分为单独的数据要处理的框架。

目前,我使用以下代码将列表拆分为每个单独的数据框:

dat5split <- setNames(split(dat5, dat5$CODE), paste0("df", unique(dat5$CODE)))

list2env(dat5split, globalenv())

然后,我分别处理每个数据框:

    # call in SPC function and write to 'results10000'

    results10000<-SPC_XBAR(df10000,vol_n,seasonality)

    results10000 = results10000 %>%
      cbind(Spec = df10000$CODE) %>%
      subset(`table_n` == 1)

    results10000 <- results10000[order(results10000$tpd),]

    results10000$Date <- as.Date(cbind(Date = df10000$CENSUS_DATE))

# call in SPC function and write to 'results10001'

    results10001<-SPC_XBAR(df10001,vol_n,seasonality)

    results10001 = results10001 %>%
      cbind(Spec = df10001$CODE) %>%
      subset(`table_n` == 1)

    results10001 <- results10001[order(results10001$tpd),]

    results10001$Date <- as.Date(cbind(Date = df10001$CENSUS_DATE))

目前,我将函数“SPC_XBAR”调用到代码中前面设置 vol_n 和季节性的位置。然后脚本将值传递给函数,然后将结果分配给'results10000,results10001'等。在此基础上,我对每个新创建的数据帧进行少量数据整理,然后将结果反馈回sql server .

正如你所看到的,每一个都是单独硬编码的,效率不高。

我想做的是为列表中的每个单独的数据框循环一段代码,而不是单独命名每个数据框。

我相信循环可以解决这个问题,但是在围绕它创建循环的能力方面我有点缺乏经验。任何建议将不胜感激。

干杯

标签: rfunctionloops

解决方案


您是否考虑lapply过在整个列表中使用而不是循环?在这里检查...

编辑:我尝试详细说明......如果你这样做会发生什么:

myFunction <- function(x) {
    results<-SPC_XBAR(x,vol_n,seasonality)

    results = results %>%
      cbind(Spec = x$CODE) %>%
      subset(`table_n` == 1)

    results <- results[order(results$tpd),]

    results$Date <- as.Date(cbind(Date = x$CENSUS_DATE))

    results
}

lapply(dat5split, myFunction)

我希望它返回结果数据集的列表


推荐阅读