Я думаю, что если вы знаете комбинацию параметров, которые будут использоваться для каждой модели, то лучше создать фрейм данных с именами и параметрами модели, как показано ниже
# create a data frame with model names and parameters
# NOTE: i am assuming all models have equal number of parameters
# if they are unequal, then store as list of models
model = c('default', 'mymodel');
parm1 = c(0.5, 0.75);
parm2 = c(1, 2);
models.df = data.frame(model, parm1, parm2)
Теперь вы можете смоделировать любую из моделей, передав ее в качестве аргумента функции mySimulation. Я использовал фиктивный пример симуляции, который вы можете заменить своим кодом.
# function to run simulation based on model name
mySimulation = function(model = 'default'){
# find row corresponding to model of interest
mod.row = match(model, models.df$model)
# extract parameters corresponding to model
parms = models.df[mod.row, -1]
# run dummy simulation of drawing normal random variables
sim.df = rnorm(100, mean = parms[,1], sd = parms[,2])
return(sim.df)
}
Если вы хотите запустить все свои симуляции за один шаг, вы можете использовать отличный пакет plyr
и вызвать
library(plyr)
sim.all = ldply(models.df$model, mySimulation)
Если каждая из ваших симуляций возвращает неодинаковое количество значений, вы можете использовать функцию llply
вместо ldply
.
Если вы предоставите более подробную информацию о возвращаемых значениях вашего моделирования и сведения о том, что он делает, этот код можно легко настроить, чтобы получить то, что вы хотите.
Дайте мне знать, если это работает