2012-12-19 44 views
2

我正在嘗試保留函數中的賦值對象(構建一個ts函數以開始建模一個單變量過程,我知道簡單!)。我無法找到一種方法在工作區中保留對象。它工作正常,只是使用for循環,但我想參數化以下內容:通過函數將工作空間中的指定對象保留下來

ts.builder<-function(x,y,z){ 
    for(i in 9:13){ 
    assign(paste(x,i,sep="_"),ts(yardstick[1:528,i], freq=24)) 
    assign(paste(y,i,sep="_"),ts(yardstick[529:552,i], freq=24)) 
    assign(paste(z,i,sep="_"),ts(yardstick[1:552,i], freq=24)) 
    } 
} 

ts.builder("yard.book.training","yard.book.small.valid", "yard.book.valid") 

任何指針? 我想它可能需要一個返回語句,但我還沒有發現這是有用的。

+3

您可以指定環境'assign',成爲全球環境。但以這種方式生成變量名通常是個不錯的主意。您應該考慮使用列表等結構來包含數據。 –

回答

4

未經測試的(重複的例子有很大幫助):

ts.builder <- function() { 
    xd <- list() 
    yd <- list() 
    zd <- list() 

    for (i in 9:13) { 
    xd[[i]] <- ts(yardstick[1:528,i], freq=24) 
    yd[[i]] <- ts(yardstick[529:552,i], freq=24) 
    zd[[i]] <- ts(yardstick[1:552,i], freq=24) 
    } 
    list(yard.book.training=xd, yard.book.small.valid=yd, yard.book.valid=zd) 
} 

l <- ts.builder() 

那麼這裏有返回值:

l$yard.book.training[[9]] 

+0

謝謝馬修,這是我用過的第四個答案。我發生不幸的地方就是保留for循環以供在函數中使用。第9-13個變量是需要放入ts對象中的變量。這樣,我可以在代碼中嵌入arima函數。任何關於在初始數據框中滾動這些特定位置的想法? – Murray

+0

啊,我沒有刷新。我將在今晚晚些時候爲此工作。非常感謝 – Murray

+0

注意到,第一篇文章。 – Murray

相關問題