【发布时间】:2014-01-01 19:17:39
【问题描述】:
我正在尝试在 R 中编写一个函数,用于简单的时间序列回归(该函数的结果是更复杂函数的输出)。在第一部分中,我定义了变量并为函数创建了一些滞后,根据使用的滞后将其命名为 ar_i。
然而,在第二部分中,我尝试在最初定义的变量上使用 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"
【问题讨论】:
-
@josilber 的(更好的)解决方案的替代方法是在您的
cbind调用中使用get,这是您当前尝试失败的方法。 -
嗨,托马斯。谢谢您的答复。我试过 cbind(get(paste("ar_",linear, collapse=',', sep = "")))。它也不起作用。我得到:get(paste("ar_", linear, collapse = ",", sep = "")) 中的错误:找不到对象 'ar_1,ar_2,ar_3,ar_4'