簡體   English   中英

將函數應用於我的全局環境 R 中的對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM