如何在多个对象上重复一个简单的命令?

时间:2014-04-27 22:20:11

标签: r

我有1个从1个数据集创建的独特线性模型。每个人都是由:

创建的
mymodel1 <- lm(y ~ x1 + etc, data=mydata)

现在我要做的就是在所有20个模型上创建一个命令输出列表,例如类似的东西:

summary(mymodel[i])$adj
for i=1,2,...,20

这可能是显而易见的,但我没有找到任何相关内容。

这是对20个变量名进行操作的最佳方式吗?

for (i in 1:20) print(somefunction(eval(parse(text=paste0("model", i))))$adj)

1 个答案:

答案 0 :(得分:1)

这应该返回工作区中的项目向量,这些项目继承自&#39; lm&#34;:

    lm.names <- ls()[ sapply( ls(), function(x) 'lm' %in% class(get(x) ))]

这将返回所有这些摘要项的列表。

    sapply( lm.names, function(x) summary( get(x) )

注意使用get(两次)。 ls函数返回对象的名称,但既不作为对象本身也不作为真正的R名称,而是作为字符向量。您可能需要仔细查看&#34; Value&#34; ?summary.lm的一节,因为它是一个列表,也许你只想要一些项目列表?