[英]Apply a function to objects in my global environment R
這個代碼塊基於 alpha 的長度創建了 10 個對象。
alpha <- seq(.1,1,by=.1)
for (i in 1:length(alpha)){
assign(paste0("list_ts_ses_tune", i),NULL)
}
如何將每個函數放入我創建的新 list_ts_ses_tune1 ... null 對象中? 每個函數都放在一個列表中,如果我設置 list_ts_ses_tune1 <- lapply ...
for (i in 1:length(alpha))
{
list_ts_ses_tune[i] <- lapply(list_ts, function(x)
forecast::forecast(ses(x,h=24,alpha=alpha[i])))
list_ts_ses_tune[i] <- lapply(list_ts_ses_tune[i], "[", c("mean"))
}
也許這是一個更好的方法來做到這一點? 我需要值列表中的每個單獨輸出。
編輯:
for (i in 1:length(alpha))
{
list_ts_ses_tune[[i]] <- lapply(list_ts[1:(length(list_ts)/2)],
function(x)
forecast::forecast(ses(x,h=24,alpha=alpha[i])))
list_ts_ses_tune[[i]] <- lapply(list_ts_ses_tune[[i]], "[", c("mean"))
}
我們可以使用mget
將所有對象返回到一個list
mget(ls(pattern = '^list_ts_ses_tune\\d+'))
此外,可以更輕松地創建 NULL list
而不是全局環境中的 10 個對象
list_ts_ses_tune <- vector('list', length(alpha))
現在,我們可以使用 OP 的代碼
for (i in 1:length(alpha))
{
list_ts_ses_tune[[i]] <- lapply(list_ts, function(x)
forecast::forecast(ses(x,h=24,alpha=alpha[i])))
}
如果我們想創建單個 data.frame
for(i in seq_along(alpha)) {
list_ts_ses_tune[[i]] <- data.frame(Mean = do.call(rbind, lapply(list_ts, function(x)
forecast::forecast(ses(x,h=24,alpha=alpha[i]))$mean)))
}
您可以通過執行以下操作簡單地完成所有操作:
library(forecast)
list_ts_ses_tune <- Map(function(x)
lapply(alpha, function(y)forecast(ses(x,h=24,alpha=y))['mean']), list_ts)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.