Как можно с помощью RMarkdown свернуть пакет с клеем? - PullRequest
1 голос
/ 07 марта 2020

Я пытался автоматизировать результаты некоторых таблиц df в латексе, используя пакеты glue и stargazer, но у меня не было никаких результатов (я хочу, чтобы значение «^ {*}» появилось следующим к каждому значению, как в таблице), чтобы затем использовать RMarkdown.

Что я хочу получить:

enter image description here

Мое текущее уродливое и подверженное ошибкам исправление:

library(dplyr)
library(glue)
library(stargazer)
X1 = c(4.70e1, 4.72e1, 4.76e1, 2.73e20)
X2 = c(4.67e1, 4.69e1, 4.77e1, 2.05e20)
tab.out = data.frame(X1, X2)
tab.out$max<-apply(tab.out, 1, max)

one = "1"
n.tab = tab.out %>%
  mutate(test1 = if_else(tab.out$X2 < tab.out$max,
                         glue("\\textsuperscript{*} is $<<one>>$.", .open = "<<", .close = ">>"),  #It doesn't work with ^{*}
                         glue("")))

Примечание : one было просто для проверки коллапса, потому что я пытался glue_data, а также glue_collapse и это не сработало.

С другой стороны, если предположить, что свертка работает, как бы я поступил, чтобы правильно отладить латексный код? Потому что я пытался с stargazer, xtable и textreg, но в каждой из функций он не распознает "\,}, ^ {*}" .

n.tab = n.tab[c(1,2,4)]
stargazer(n.tab, summary = F, header = F)

Что я получил?

enter image description here

1 Ответ

0 голосов
/ 14 марта 2020

Я добился этого с помощью функции paste0, как указано здесь и по рекомендации @stefan, но теперь я хотел бы автоматизировать ту же функцию для n-столбцов

library(dplyr)
col.nam = c("AIC(n)", "HQ(n)", "SC(n)", "FPE(n)")
tab.out = data.frame(col.nam, X1, X2)

n.tab = tab.out %>%
  mutate(test1 = if_else(tab.out$X1 < tab.out$X2,
                         paste0(X1,"$^{*}$"),
                         paste0(X1)),
         test2 = if_else(tab.out$X2 < tab.out$X1,
                         paste0(X2,"\\textsuperscript{*}"),
                         paste0(X2)))%>%
  select(col.nam, test1, test2)

colnames(n.tab) = c("Parámetros", "Lag 1", "Lag 2")
print(xtable::xtable(n.tab, 
                     header = F, 
                     caption = "asdasdasdasd",
                     label="table:tb1",
                     caption.placement = "top",
                     align="llcc"),
      hline.after = c(-1,0), 
      include.rownames=FALSE, 
      include.colnames = TRUE,
      add.to.row = list(pos = list(nrow(n.tab)),
                        command = paste("\\hline \n",
                            "\\multicolumn{3}{l}{\\footnotesize{$^{*}$Indica el orden de retraso seleccionado}} \\\\",
                            "\\multicolumn{3}{l}{\\footnotesize{\\textit{Elaboración: Los autores}}}",
                            sep = "")), comment=FALSE,
      sanitize.text.function = function(x){x})

enter image description here

...