2014-02-27 76 views
0

我是新來的R.[R復讀功能,並在每次迭代存儲爲對象

我試圖創建具有不同的頻率進行採樣的時間序列矩陣。更具體地說,我有一個從1870年到2014年的每月價格矩陣,我想從中創建新的矩陣,從1個月到120個月不等。對於每個價格頻率,我需要R存儲一個單獨的對象,然後可以在函數外部使用。原始樣本有1730行(價格觀察)和8列(變量)。

到目前爲止,我已經想出了這個。該函數打印所有矩陣看似正確的頻率,但我不知道如何將矩陣保存在單個對象中。

asset_prices<-monthly historical prices 

    prices.rep <- function(x) { 
     i <- 1 
     repeat { 
      prices<-x[seq(1, 1730,i),1:8] 
      print(prices) 
      i <- i+1 
      if(i > 120) 
      break 
     } 
    return(prices) 
    } 

    results.rep<-prices.rep(asset_prices) 
    results.rep #only returns the last iteration of the function 

幫助非常感謝。 由於事先

+0

歡迎SO。通過它的外觀你的功能不返回任何東西。除非用'<< - '指定全局賦值,否則函數只能在本地分配(在函數內)。但不建議 - 更好地返回你想要的對象,並調用像'results = prices.rep(..)'這樣的函數。請嘗試在SO中提交完全可重現和最小化的示例,因爲它使得它更容易幫助.. – geotheory

+0

希望這個功能現在更容易理解。 – user3362200

回答

0

考慮一下:

prices.rep <- function(x) { 
    prices <- list() 
    for(i in 1:12) { 
     prices[[i]] <- x[seq(1, 1730, i), 1:8] 
     #print(prices) 
    } 
    return(prices) 
} 

這將返回矩陣的名單(假設你的x參數是一個矩陣)。

您也可以更緊湊地使用lapply寫:

prices.rep <- function(x) 
    lapply(1:12, function(i) x[seq(1, 1730, i), 1:8])