R:对象名称向量中对象的变换向量



上下文:我正在用R包标准估计几种不同的规格。以2为例(y为数据):

garchmodel<-ugarchspec()
garchfit = ugarchfit(spec=garchmodel, y)
egarchmodel<-ugarchspec(variance.model = list(model = "eGARCH")
egarchfit<-ugarchfit(spec=egarchmodel, y)
我写了一个函数来收集模型的信息标准:
CollectInfoCrieria <- function(models){
infoMat <- t(sapply(models, infocriteria))
return(infoMat)  
}

然后输入

themodels = c(garchfit, egarchfit)
CollectInfoCrieria(themodels)

我得到一个矩阵,每行包含每个模型规格的信息标准。我想将模型名称转换为字符串以用作行名,如我所愿。如果我定义一个函数

getName<-function(names) deparse(substitute(names))

getName(garchfit)给出"garchfit",而

models <- c(garch11fit, egarchfit)
sapply(models, getName)

给了[1] "X[[i]]" "X[[i]]"

我怎样才能到达

[1] "garch11fit" "egarchfit"

garch11fit=1
egarchfit=2
models <- c(garch11fit=garch11fit, egarchfit=egarchfit)
names(models)

如果你命名变量,你可以得到它们的名字。但是在您的代码中,这些名称没有关联到models变量中,只有garch11fit和egarchfit的值,因此您无法获得这些名称。

这是如何在CollectInfoCrieria函数中收集对象名称的:

CollectInfoCrieria <- function(...){
infoMat <- t(sapply(c(...), infocriteria))
models = as.character(eval(substitute(alist(...))));
out = data.frame(models,infoMat)
}

最新更新