在使用lm.beta修改对象后,如何使用broom将lm摘要导出到数据框?

在使用lm.beta修改对象后,如何使用broom将lm摘要导出到数据框?,r,dataframe,R,Dataframe,我做了回归分析,然后使用lm.beta::lm.beta()对其进行了标准化。这样,它会在结果中添加一个名为standardized的列,如下所示: lmfit <- lm(mpg ~ cyl + disp + hp + wt, data = mtcars) lmfit2 <- lm.beta::lm.beta(lmfit) summary(lmfit2) Estimate Standardized Std. Error t value P

我做了回归分析,然后使用
lm.beta::lm.beta()
对其进行了标准化。这样,它会在结果中添加一个名为standardized的列,如下所示:

  lmfit <- lm(mpg ~ cyl + disp + hp + wt, data = mtcars)
  lmfit2 <- lm.beta::lm.beta(lmfit)
  summary(lmfit2)
            Estimate   Standardized Std. Error  t value  Pr(>|t|)
(Intercept) 40.82854   0.0000000    2.75747     14.807   1.76e-14    
cyl         -1.29332   -0.38324     0.65588     -1.972   0.058947
...

如您所见,std.error列实际上是标准化的。如何修复标题?非常感谢

如我在评论中所述:

tidy.lm.beta <- function (x, conf.int = FALSE, conf.level = 0.95, exponentiate = FALSE, 
                                 quick = FALSE, ...) 
{
    if (quick) {
        co <- stats::coef(x)
        ret <- data.frame(term = names(co), estimate = unname(co))
        return(broom:::process_lm(ret, x, conf.int = FALSE, exponentiate = exponentiate))
    }
    co <- stats::coef(summary(x))
    nn <- c("estimate","std.estimate", "std.error", "statistic", "p.value")
    if (inherits(co, "listof")) {
        ret <- plyr::ldply(co, broom:::fix_data_frame, nn[1:ncol(co[[1]])], 
                                             .id = "response")
        ret$response <- stringr::str_replace(ret$response, "Response ", 
                                                                                 "")
    }
    else {
        ret <- broom:::fix_data_frame(co, nn[1:ncol(co)])
    }
    broom:::process_lm(ret, x, conf.int = conf.int, conf.level = conf.level, 
                         exponentiate = exponentiate)
}

lmfit <- lm(mpg ~ cyl + disp + hp + wt, data = mtcars)
lmfit2 <- lm.beta::lm.beta(lmfit)

请出示复印件example@G.Grothendieck我想他们的问题是怎么做,因为布鲁姆并不专门处理这种情况。如果你键入
broom:::tidy.lm
,你会发现代码非常简单。如果为了安全起见修改它,将缺少的列名添加到
nn
变量中,并在所有扫帚函数前面加上
broom::
,它应该可以正常工作@DavidRobinson甚至可能对处理这些请求的pull请求感兴趣……在证明用户错误之前,应该假设用户错误。谢谢Joran。对我来说,这看起来很复杂,因为我对R非常陌生。我最终做的是为列
colnames
指定名称。
tidy.lm.beta <- function (x, conf.int = FALSE, conf.level = 0.95, exponentiate = FALSE, 
                                 quick = FALSE, ...) 
{
    if (quick) {
        co <- stats::coef(x)
        ret <- data.frame(term = names(co), estimate = unname(co))
        return(broom:::process_lm(ret, x, conf.int = FALSE, exponentiate = exponentiate))
    }
    co <- stats::coef(summary(x))
    nn <- c("estimate","std.estimate", "std.error", "statistic", "p.value")
    if (inherits(co, "listof")) {
        ret <- plyr::ldply(co, broom:::fix_data_frame, nn[1:ncol(co[[1]])], 
                                             .id = "response")
        ret$response <- stringr::str_replace(ret$response, "Response ", 
                                                                                 "")
    }
    else {
        ret <- broom:::fix_data_frame(co, nn[1:ncol(co)])
    }
    broom:::process_lm(ret, x, conf.int = conf.int, conf.level = conf.level, 
                         exponentiate = exponentiate)
}

lmfit <- lm(mpg ~ cyl + disp + hp + wt, data = mtcars)
lmfit2 <- lm.beta::lm.beta(lmfit)
> tidy.lm.beta(lmfit2)
         term    estimate std.estimate  std.error  statistic      p.value
1 (Intercept) 40.82853674    0.0000000 2.75746793 14.8065319 1.761402e-14
2         cyl -1.29331972   -0.3832400 0.65587675 -1.9718944 5.894681e-02
3        disp  0.01159924    0.2385278 0.01172681  0.9891215 3.313856e-01
4          hp -0.02053838   -0.2336456 0.01214677 -1.6908508 1.023791e-01
5          wt -3.85390352   -0.6256700 1.01547364 -3.7951783 7.589470e-04