【发布时间】:2012-09-25 17:44:34
【问题描述】:
我的工作区中有一系列对象存储一些统计模型的结果。称它们为“model1”、“model2”等。这些模型中的每一个都附加了相同的命名元素集,例如 $coef。我想从包含字符串“model”的所有对象中提取存储在特定元素中的值到一个列表或向量中。
在命令行输入的以下代码符合我的要求:
unlist(lapply(parse(text = paste0(ls()[grep("model", ls() )], "$", "coef")), eval))
由此,我创建了以下通用函数:
get.elements <- function(object, element) {
unlist(lapply(parse(text = paste0(ls()[grep(object, ls() )], "$", element)), eval))
}
但是,当我运行此函数时,我收到以下错误:
Error in parse(text = paste0(ls()[grep(object, ls() )], "$", element)) :
<text>:1:1: unexpected '$'
1: $
^
第一季度。为什么这段代码在命令行运行时可以运行,而不是作为函数运行,更重要的是,我该如何修复它?
第二季度。更好的是,有没有更简单的方法可以完成同样的事情?对于统计学家和模拟建模师来说,这似乎是一项常见的任务,我希望基本包中有某种命令,但我一直找不到任何东西。肯定有比我繁琐的方法更优雅的方法来做到这一点。
感谢大家的帮助。
--戴夫
【问题讨论】:
-
你用什么参数来调用函数?
-
您可以使用代码
m[["coefficients"]]访问模型中的系数,因此您可以使用m[[element]]。此外,将多个模型保存为名为@987654326@、model2的变量是一个糟糕的选择:您应该将它们保存为模型列表。这样,你可以得到这样的系数:lapply(models, function(m) m[[element]])
标签: r