0

使用以下代码,我在下图中生成了 laTex 表。您可能会注意到输出有一些问题。

  1. 标题不见了
  2. P值在错误的地方
  3. 脚注未对齐

任何帮助是极大的赞赏!


library(tidyverse)
library(modelsummary)
library(gt)


data <- as.data.frame(ChickWeight)
mod_control <- lm(weight ~ Time , data = data)
mod_treat <- lm(weight ~ Time + Diet, data = data)


mod_one_list <- list(mod_control, mod_treat)

# coefmap
cm <- c("(Intercept)"="Konstant",
        "Time" = "Tid",
        "Num.Obs." = "n")

# gof_map 
gm <- list(list(raw = "nobs", clean = "N", fmt = 0))

# title
tit <- "En beskrivning här"


# produce table


modelsummary(mod_one_list, 
                          output = "gt",
                          stars = T,
                          title = tit,
                          coef_map = cm,
                          gof_map = gm,
                          vcov = "HC1") %>%  
  tab_spanner(label = '(1)', columns = 2) %>%
  tab_spanner(label = "(2)", columns = 3) %>% 
  tab_footnote("För standardfel använder vi HC1",
               locations = cells_body(rows = 1, columns = 2)) %>%
  as_latex() %>%
  cat()

在此处输入图像描述

4

1 回答 1

2

这是gt包的问题。添加脚注和源注释(modelsummary用于报告重要性星)时,gt将两种类型的注释放在不同的迷你页面中。这会破坏 LaTeX 中的对齐方式。

您可以通过检查这个最小示例的代码来看到这一点:

library(gt)

dat <- mtcars[1:4, 1:4]

gt(dat) |> 
  tab_source_note(source_note = "source note") |> 
  tab_footnote("footnote", locations = cells_body(rows = 1, columns = 2)) |> 
  as_latex() |> 
  cat()
## \captionsetup[table]{labelformat=empty,skip=1pt}
## \begin{longtable}{rrrr}
## \toprule
## mpg & cyl & disp & hp \\ 
## \midrule
## 21.0 & 6\textsuperscript{1} & 160 & 110 \\ 
## 21.0 & 6 & 160 & 110 \\ 
## 22.8 & 4 & 108 & 93 \\ 
## 21.4 & 6 & 258 & 110 \\ 
##  \bottomrule
## \end{longtable}
## \vspace{-5mm}
## \begin{minipage}{\linewidth}
## \textsuperscript{1}footnote \\ 
## \end{minipage}
## \begin{minipage}{\linewidth}
## source note\\ 
## \end{minipage}

我不确定gt维护者是否会认为这是一个“错误”,但无论如何在他们的存储库中报告它可能是值得的: https ://github.com/rstudio/gt/issues

对于它的价值,我认为默认的 LaTeX 输出 modelsummary(model, output="latex")通常效果更好,因为它使用kableExtra,这似乎更优先考虑 LaTeX。

于 2021-11-22T20:59:35.153 回答