我目前有一个列表,该列表由大约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 。
如您所见,每个人都被单独进行了硬编码,效率不高。
我想做的是为列表中的每个数据框循环一小段代码,而不用单独命名每个代码框。
我相信循环可以解决此问题,但是围绕它创建循环的能力方面我还没有经验。任何建议将不胜感激。
欢呼
答案 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)
我希望它会返回结果数据集的列表