0

编码:

A <- matrix(NA, nrow = 10, ncol = 3)
colnames(A) <- paste('trial', 1:3)

让我想用不同的东西来命名第三列trial 3:我该怎么办?

现在没事了:

library(vars)
data(Canada)
var.2c <- VAR(Canada, p = 2, type = "const")
pred <- predict(var.2c, n.ahead = 8, ci = 0.95)

如果我想查看 的第一个值pred,根据predict这里返回的方法,我必须输入

> pred$fcst$e[1]
[1] 962.6557

您可以看到我必须指定时间序列名称e才能获得我想要的值。如果将上面的代码插入到函数中,则无法在pred$fcst$e[1]不指定时间序列名称的情况下调用,因此无法将另一个时间序列数据帧传递给我们的自定义函数。

示例:假设X为时间序列数据框。然后

pred.var <- function(X) {
   var.2c <- VAR(X, p = 2, type = 'const')
   pred <- predict(var.2c, n.ahead = 8, ci = .95)
   # return(pred$fcst$...) # Here lies the issue, because function must know X column name
}

正如您从上面的示例中看到的那样,函数pred.var必须知道X它必须返回预测的列的名称,但除非从X.

任何想法?

谢谢,

4

2 回答 2

1

您可以通过$e或访问列表的元素[["e"]],在第二个中,您可以使用任何字符变量。所以这两件事给出了相同的值。

pred$fcst$e[1]
pred$fcst[[ colnames(Canada)[1] ]][1]
于 2012-09-21T16:49:35.110 回答
1

那个怎么样?

colnames(A) <- c("trial1","trial2","something-different")

head(A)
     trial1 trial2 something-different
[1,]     NA     NA                  NA
[2,]     NA     NA                  NA
[3,]     NA     NA                  NA
[4,]     NA     NA                  NA
[5,]     NA     NA                  NA
[6,]     NA     NA                  NA

当然,“不同的东西”只是任何名称。

于 2012-09-21T16:41:17.827 回答