我真的没有找到解决方案,即使它看起来很简单,无论如何
我有一个数据框列表,我有一个非常大的代码(它不仅仅是一个应用程序,或者是一堆for循环和创建表...)我想要应用于每个数据框,到列表的每个元素,
我想在这个列表上做一个循环,并按数据框浏览数据框,但是如何提取当前元素呢?
(我的代码大约有450行,我只是想用下一个名称替换数据框名称,它只是自动的)
dbR<-list()
for (i in datedeb:datefin)
{
sqlst<-paste("SELECT * FROM `cl4d6-2015/09/",sprintf("%02d",i),"`",sep="")
nomcl<-paste0("cl",sprintf("%02d",i),sep="")
dbR[[nomcl]]<-dbGetQuery(db,sqlst)
}
for (i in dbR)
{
#mycode
}
答案 0 :(得分:1)
请参阅以下示例代码。
dbR <- sapply(1:30, simplify = FALSE, USE.NAMES = TRUE, FUN = function(i) {
dt <- dbGetQuery(db, paste("SELECT * FROM `cl4d6-2015/09/",
sprintf("%02d", i), "`", sep = ""))
#mycode
return(dt)
})
上面的代码将在1:30
上运行,类似于for
循环,但输出会自动保存为单独的列表条目。我们将数据框列表保存到dbR
。您还可以在数据读入后添加在数据帧上运行的代码。
sapply()
和USE.NAMES = TRUE
的 simplify = FALSE
将像lapply
一样运行,但会保留列表名称/值。
apply
系列功能并不总是直观,但它们功能强大且速度快!他们也很容易转化为并行操作。我建议你对它们感到满意。