2014-11-13 29 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)