【发布时间】:2014-01-09 04:36:49
【问题描述】:
我有一个模型列表,并且为了使代码更易于维护(因此难以添加和删除模型),我希望有一个单独的位置来存储它们及其名称。为此,我必须解决以下命名问题。
在上游,我生成模型的效率低于以下方法(如果它是这样压缩的,我会将 assign 它们转换为自己的 env)。
lmNms <- c( "mod1", "mod2", "mod3", "mod4", "mod5", "mod6")
lapply(lmNms, function(N) assign(N, lm(runif(10) ~ rnorm(10)), env = .GlobalEnv))
在下游,我已经把乱七八糟的东西收集到一个列表中:
modelList <- list(mod1, mod2, mod3, mod4, mod5, mod6)
我有一个(未命名的)变量输出列表,并附上如下名称:
output <- list(1, 2, 3, 4, 5, 6)
names(output) <- lmNms
我希望能够使用来自modelList 的型号名称:
modelList <- list(mod1, mod2, mod3, mod4, mod5, mod6)
names(output) <- someFun(modelList)
我确定存在someFun——但我无法弄清楚……这可以做到吗?
明确地说,这样做的目的是不使用使用lmNms——我想从modelList获取名称,或者在我构建@时附加它们987654331@(重点是避免list(a = a, b=b ...)样板。
【问题讨论】:
-
在创建模型期间,这个问题的一个好的解决方案很可能位于代码的更上游。如果我试图在自己的代码中解决这个问题,我会首先避免通过
list(mod1, mod2, mod3, mod4, mod5, mod6)创建模型列表。但是如果没有更多细节,很难说你会怎么做。 -
改变这个方面是一项艰巨的工作——所以我最好不要......
-
你能举个例子
mod1,mod2,etc... -
它们是大型模型输出对象。与各种回归函数的输出类型相似。关键是我想命名一个列表的元素。