R为数据帧列表创建循环

时间:2019-12-30 08:41:46

标签: r function loops

我目前有一个列表,该列表由大约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,result10001'等。在此之后,我对每个新创建的数据帧进行了少量数据整理,然后将结果最终反馈到sql server 。

如您所见,每个人都被单独进行了硬编码,效率不高。

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

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

欢呼

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用lapply而不是整个列表中的循环?选中here ...

编辑:我会再详细说明一下...如果执行此操作会发生什么情况

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)

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