2013-12-13 31 views
0

我想在R中編寫一個函數,用於簡單的時間序列迴歸(該函數的結果是更復雜的輸出)。在第一部分中,我定義了變量併爲函數創建了一些滯後,這些滯後取決於所使用的滯後,命名爲ar_i。在R中刪除函數輸出中的引號

但是,在第二部分中,我嘗試在最初定義的變量上使用cbind函數將這種滯後結合在矩陣中。正如你所看到的,輸出不是預期的矩陣,而是滯後本身的名字。我試圖通過使用noquote()和cat()函數來解決此問題,但這些似乎不起作用。

你有什麼建議嗎?提前致謝!!!

Pd:代碼和結果如下。

trans  <- dlpib 
ar   <- dlpib 
linear  <- 1:4 

for (i in linear){ 
    assign(paste("ar_",i,sep = ""), lag(ar,k=-i)) 
} 

linear_dat <- cbind(paste("ar_",linear, collapse=',', sep = "")) 

> linear_dat 
    [,1]     
[1,] "ar_1,ar_2,ar_3,ar_4" 
+0

的替代@ josilber的(更好的)解決方案是使用''你的電話cbind',這裏面有什麼GET'你目前嘗試失敗。 – Thomas

+0

嗨托馬斯。感謝您的答覆。我試過cbind(get(paste(「ar _」,linear,collapse =',',sep =「」)))。它也不起作用。我得到:get(paste(「ar_」,linear,collapse =「,」,sep =「」))中的錯誤: 未找到對象'ar_1,ar_2,ar_3,ar_4' – Javier

回答

1

我想你可以更有效地去了解這個與sapply:

linear <- 1:4 
linear_list <- lapply(linear, function(i) lag(ar, k=-i)) 
linear_dat <- do.call(cbind, linear_list) 
colnames(linear_dat) <- paste0("ar_", linear)