Вот пример:
sql_strings <- lapply(1:100, function(x){
paste0("SELECT a.*, b.ln_yval FROM appo_01_t_all as a LEFT JOIN df_01_Z",
# The following line takes care of the leading zeros, assuming 4 digits are needed.
sprintf("%04d", x),
" as b on a.week=b.week")
})
your_function <- function(string){
df <- sqldf(string)
df <- df[,-2]
df <- df[order(df$week),]
ts_df <- ts(df$ln_yval, freq=52)
mod_01 <- HoltWinters(ts_df, alpha = NULL, beta = NULL, gamma = NULL, seasonal = c("additive"))
fcst_tab <- predict(mod_01, 4, prediction.interval = FALSE)
return(fcst_tab)
}
outcomes <- lapply(sql_strings, your_function)
Здесь outcomes
- это список того, что ваша функция возвращает для каждой строки.
Если вам нужно сохранить каждый фрейм данных для чего-либо еще, Вы также можете разбить эту функцию на несколько частей. Например,
get_dataframes <- function(string){
df <- sqldf(string)
df <- df[,-2]
df <- df[order(df$week),]
return(df)}
get_predictions <- function(df)
ts_df <- ts(df$ln_yval, freq=52)
mod_01 <- HoltWinters(ts_df, alpha = NULL, beta = NULL, gamma = NULL, seasonal = c("additive"))
fcst_tab <- predict(mod_01, 4, prediction.interval = FALSE)
return(fcst_tab)
}
dataframes <- lapply(sql_strings, get_dataframes)
predictions <- lapply(dataframes, get_predictions)