我正在尝试在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"
答案 0 :(得分: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)