2014-11-13 27 views
2

是否有线性模型的通用提取函数来从模型中调用调用?我正在寻找在一系列数据框中应用模型,然后提取该模型的调用(我在很多数据框和模型上做了很多次,所以寻找一种简单的方法来跟踪哪个模型是)lm中“呼叫”的提取功能

示例数据:

set.seed(1234) 
library(plyr) 
    data <- data.frame(
     biz = sample(c("telco","shipping","tech"), 50, replace = TRUE), 
     region = sample(c("mideast","americas"), 50, replace = TRUE), 
     orders = sample(1:50, 50, replace=TRUE), 
     revenue = sample(100:150, 50, replace=TRUE) 
     ) 

现在,如果我想跨越这个数据应用一个简单的LM,由“区”:

modlist <- dlply(data, 'region', function(df){ 
    summary(lm(revenue ~ orders, data=df)) 
    }) 

的东西,有一个标准的提取功能,如“系数”=“系数”,这很直接:

coefs <- ldply(modlist, coef) 

但我找不到任何方法来提取“呼叫”,例如“lm(formula = revenue〜orders,data = df)”。有任何想法吗?

+1

你可以在'lm'呼叫例如'LM (mpg〜hp,mtcars)$ call'或'summary(model)$ call' –

回答

3

只写你自己的函数来提取呼叫以同样的方式stats:::print.lm确实

coefs <- ldply(modlist, function(x) deparse(x$call)) 
3

您可以使用[[

lapply(modlist, "[[", "call") 
# $americas 
# lm(formula = revenue ~ orders, data = df) 
# 
# $mideast 
# lm(formula = revenue ~ orders, data = df)