Suppose I have a function that creates data frames. I'd like to run that function with different input values, and then rbind the results together into one big data frame, as below:
CreateDataFrame <- function(type="A", n=10, n.true=8) {
data.frame(success=c(rep(TRUE, n.true), rep(FALSE, n - n.true)), type=type)
}
df <- do.call(rbind, lapply(toupper(letters[1:5]), CreateDataFrame))
My CreateDataFrame function takes three arguments. In the example above, the second and third arguments are held constant. I'd like to do the same as above, but have the second and third arguments change on each call. I think I have to use mapply, like this:
mapply("CreateDataFrame", type=toupper(letters[1:5]), n=10, n.true=8:4)
I'm having trouble because mapply isn't returning a list, which prevents me from running do.call(rbind, mapply(...))
. How can I end up with a single data frame, as I did in the example at the top?
Looks like mapply is returning a matrix of lists. I was expecting it to return a list of data frames. What should I do differently?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…