更改单列名称(并通过函数指向它)

时间:2012-09-21 16:17:58

标签: r

代码:

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>

有什么想法吗?

谢谢,

2 个答案:

答案 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]