【问题标题】:Regression tables in Markdown format (for flexible use in R Markdown v2)Markdown 格式的回归表(在 R Markdown v2 中灵活使用)
【发布时间】:2014-08-12 02:10:34
【问题描述】:

新版本的 R Markdown 是基于 pandoc 的,所以你可以很方便的改变输出格式。

我的问题是从例如获取降价格式的表格。回归模型,因为 LATEX 和 HTML 表在 pandoc 转换后无法生存。

我知道从各种模型(stargazer、texreg、asprtable...)生成 LATEX/HTML 输出的包,并且我知道从数据框和矩阵而不是从其他模型生成降价表的函数/包对象。

有什么建议吗?

【问题讨论】:

  • 试试pander,我正是为了这个目的而开始的:rapporter.github.io/pander 而 Roman 目前正致力于在 GSoC 2014 中实现一系列新的 S3 方法,因此已经包含了很多模型——但是请请随时在GH 上提出更多功能请求。
  • 谢谢,这符合我的一些需求!有没有一种方法可以显示 series 回归模型的结果?
  • @user3762565 是的,参见例如github.com/Rapporter/pander/pull/80

标签: r knitr pandoc r-markdown


【解决方案1】:

更多详情我的above comment

  1. 为可重现的示例定义一些模型:

    lm0 <- lm(hp ~ wt, mtcars)
    lm1 <- lm(qsec ~ hp, mtcars)
    lm2 <- lm(qsec ~ wt, mtcars)
    
  2. 根据这些创建比较表:

    require(memisc)
    mtable123 <- mtable('Model 1' = lm0,
                'Model 2' = lm1,
                'Model 3' = lm2,
                summary.stats = c('R-squared','F','p','N'))
    
  3. 只需调用pander即可呈现降价表:

    pander(mtable123)
    
  4. 享受结果:

    --------------------------------------------------
         &nbsp;        Model 1    Model 2    Model 3  
    ----------------- ---------- ---------- ----------
     **(Intercept)**   -1.821\   20.556***\ 18.875***\
                       (32.325)   (0.542)    (1.103)  
    
         **wt**       46.160***\     \       -0.319\  
                       (9.625)               (0.328)  
    
         **hp**           \      -0.018***\     \     
                                  (0.003)             
    
      **R-squared**     0.434      0.502      0.031   
    
          **F**         22.999     30.190     0.945   
    
          **p**         0.000      0.000      0.339   
    
          **N**           32         32         32    
    --------------------------------------------------
    

感谢Roman Tsegelskyi 在 GSoC 2014 中实现这一出色功能。

【讨论】:

  • @Ignacio 我明白了,感谢您提供详细信息。好吧,这绝对不是一个 markdown 问题,而且在这个线程中不相关,所以如果我是你,我会开始一个关于 SO 的新问题。否则搜索以下关键字:custom CSS with knitr。
  • @HernandoCasas 请确认您使用的是pander 中最多的recent version,因为它在CRAN 上已经过时了。我将在接下来的几周内在那里推送更新。
  • @HernandoCasas 你是从 RStudio 编织的吗?可能它会在没有加载 knitr 或其他东西的情况下启动一个普通的 R 会话。我刚刚向 GH 推送了一个可能的更新,请重新安装 pander 的开发版本并告诉我它是否有效。
  • @HernandoCasas 是的,这就是我昨天的did :) 由于最近在pander 中有一个update,因此在调用时无需在您的块选项中再指定results='asis' pander.
  • 当我尝试按照您的建议进行操作时,我似乎收到:“pander.default(m) 中的警告:“memisc_mtable”中没有 pander.method”。
【解决方案2】:

只需生成 HTML 或 LATEX 表格。您所要做的就是将 results='asis' 添加到代码块中。它将保持输出不变。

例如,使用 xtable 的这段代码对我有用。

```{r,results='asis'}
x<-rnorm(100)
y<-rnorm(100)
lm <- lm(y~x)
library(xtable)
print(xtable(summary(lm)),type='html')
```

【讨论】:

  • 您能否提供一个最小的工作示例,以及如何编译它的说明?
【解决方案3】:

几个小时前我做了什么:

  1. 一些数据:

    ```{r}
    lm1 <- lm(qsec ~ hp, mtcars)
    lm2 <- lm(qsec ~ wt, mtcars)
    ```
    
  2. 我们使用包sjPlot

    ```{r}
    library(sjPlot)
    tab_model(lm1,lm2, file="output.html")# You have to save the table in html format.
    ```
    

    下一部分需要在markdown中的chunk之外:

htmltools::includeHTML("output.html")

【讨论】:

  • 这对我不起作用,请您插入一个最小的示例:)
  • 已修复。抱歉弄错了
  • 'sjt.lm' 已弃用。请改用“tab_model”。
【解决方案4】:

另一种使用 sjPlot(用于轻松呈现回归输出的优秀库)的方法是使用 no.output 功能:

     library(sjmisc)
     library(sjPlot)
     library(magrittr)

     lm(qsec ~ wt, mtcars) %>% 
       sjt.lm(no.output = TRUE, show.se = TRUE) %>% 
       return() %>% .[["knitr"]] %>% asis_output

【讨论】:

    【解决方案5】:

    huxtable 包现在可以打印格式良好的回归表。 请参阅文档https://hughjonesd.github.io/huxtable/huxreg.html

    【讨论】:

      【解决方案6】:

      我用一个使用流行的(和更新的)knitr 和 kableExtra 包的例子来更新它。

      library(knitr)
      library(xtable)
      
      lm(hp ~ wt, mtcars) %>%
      summary() %>%
      xtable() %>%
      kable()
      

      现在您可以使用 Hao Zhu 的 kableExtra 包中提供的所有酷炫表格格式功能。

      【讨论】:

      • 这个可以做模型对比吗?
      猜你喜欢
      • 1970-01-01
      • 2014-04-09
      • 1970-01-01
      • 1970-01-01
      • 2014-11-10
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多