2017-02-22 70 views
0

我正在使用具有內部循環的循環。在每個內部循環中創建x個時間序列(ts1,ts2,ts3,... tsx),然後我需要使用cbind(data.f = cbind(ts1,ts2,ts3,... tsx ))以繪製data.f並查看在同一圖中創建的所有時間序列。 的問題是,在每個週期中創建的(x)的變化的時間序列的數量,所以該命令:如何生成可變數量的變量?

data.f=cbind(ts1, ts2, ts3,... tsx) 

將有每一次不同數量的術語「TSI」的。我怎樣才能在我的通用循環中定義這個命令,包括所有在內部循環中創建的tsx,當我不知道每次循環的次數時?

+1

最好使用列表而不是一堆對象。如果對象的數量來自一個循環,你必須用'lapply()','sapply()'或'replicate()'(或類似的東西)替換循環。 – jogo

回答

0

嘗試do.callcbind如下

total <- abs(round(rnorm(1) * 20)) 
ts_final <- do.call(cbind,lapply(1:total,function(x){ 
    as.xts(1:10,Sys.Date()-1:10) 
})) 
0

當你發現自己附加號碼與您的變量名,你需要停止在軌道和重新思考你的代碼:你應該用一個向量或列表來代替。

在您的具體情況下,創建一個時間序列列表而不是單個變量,並使用dplyr::bind_cols(time_series)do.call(cbind, time_series)將它們整理到表格中。

+0

Thanks @Konrad Rudolph!固定! –