代码:
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
读取,否则它不能。< / p>
有什么想法吗?
谢谢,
答案 0 :(得分: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
“不同的东西”当然是任何名称。
答案 1 :(得分:1)
您可以通过$e
或[["e"]]
访问列表元素,在第二个元素中,您可以使用任何字符变量。所以这两件事给出了同样的价值。
pred$fcst$e[1]
pred$fcst[[ colnames(Canada)[1] ]][1]