我有以下代码:
OD.viajes <- function(per) {
require(ff)
require(ETLUtils)
require(RPostgreSQL)
require(dplyr)
require(stringr)
con <- dbConnect("PostgreSQL", host = "11.111.111.11", user= "postgres", password="111111", dbname = "BASE_U_CHILE")
qsql_par.ts <- "SELECT DISTINCT(cod_ts), cod_usu FROM par_ts;"
qsql_par.viaje <- paste0(
"SELECT COUNT(*), paraderosubida, paraderobajada, periodomediodeviaje FROM viajes201504_transparencia
WHERE periodomediodeviaje = '",per,"' AND paraderosubida IN ('L-15-6-105-PO', 'L-15-6-115-PO', 'L-15-6-95-PO', 'L-16-14-100-NS')
GROUP BY paraderosubida, paraderobajada, periodomediodeviaje;")
par.ts <- read.dbi.ffdf(dbConnect.args = list(con), query = qsql_par.ts, VERBOSE=TRUE)
par.ts.sube <- as.data.frame(par.ts)
names(par.ts.sube) <- c("par.sub", "cod.usu.sub")
par.ts.baja <- as.data.frame(par.ts)
names(par.ts.baja) <- c("par.baj", "cod.usu.baj")
par.viaje <- read.dbi.ffdf(dbConnect.args = list(con), query = qsql_par.viaje, VERBOSE=TRUE)
names(par.viaje) <- c("cuenta", "par.sub", "par.baj", "periodo")
par.viaje <- as.data.frame(par.viaje)
par.od.viaj <- left_join(par.viaje, par.ts.sube, by = "par.sub")
par.od.viaj <- left_join(par.od.viaj, par.ts.baja, by = "par.baj")
dbDisconnect(con)
par.od.viaj
}
write.OD.viajes <- function(per) {
write.csv(OD.viajes(per), paste0("par.od.viaj_",per,".csv"), row.names = FALSE)
}
现在我想根据每个变量的值导出* .csv文件,我猜这可以用lapply函数完成,如下所示:
lapply(my_list, function(x)write.OD.viajes(my_list[[x]], file = paste0(x, '.csv')))
但是这个表单有错误(我的功能还可以,问题是使用lapply)。我必须对我的代码做什么样的更正?
我尝试过For循环,但这需要很长时间,这就是我想要使用lapply的原因。
my_list <- list(c("04 - MANANA DOMINGO",
"05 - MANANA SABADO",
"05 - MEDIODIA DOMINGO",
"12 - PRE NOCTURNO",
"07 - TRANSICION DOMINGO NOCTURNO",
"06 - PUNTA MEDIODIA SABADO",
"04 - PUNTA MANANA",
"02 - NOCTURNO SABADO",
"03 - TRANSICION NOCTURNO"))