I'm building an R script that's intended to query a database multiple times (one for every permutation from the elements of 3 vectors, but I'm having a hard time figuring out how to use ldply
to achieve this.
tags <- c("tag1","tag2","tag3")
times <- c("2012-08-01 13:00:00","2012-08-07 21:00:00")
timesteps <- c("2m", "10m","60m", "90m")
query <- function(tag, time, timestep) {
sql <- paste("select tag, time, timestep, value from mydb where tag = '",tag,"' and time = '",time,"' and timestep = '",timestep,"'", sep="")
# pretend the line below is actually querying a database and returning a DF with one row
data.frame(tag = tag, time = time, timestep = timestep, value = rnorm(1))
}
# function works correctly!
query(time = times[1], tag = tags[1], timestep = timesteps[1])
# causes an error! (Error in FUN(X[[1L]], ...) : unused argument(s) (X[[1]]))
ldply(times, query, time = times, tag = tags, timestep = timesteps)
I thought I could use ldply nested three times, one for each vector, but I don't even get out of the first level!
Any ideas what I can do?