如何使用 RMarkdown 使用胶水包进行折叠?

Posted

技术标签:

【中文标题】如何使用 RMarkdown 使用胶水包进行折叠?
【英文标题】:How can I make a collapse with glue package using RMarkdown?如何使用 RMarkdown 使用胶水包进行折叠?
【发布时间】:2020-06-19 18:44:12
【相关技术】:@tags@
【问题描述】:

我一直在尝试使用glue和stargazer包在乳胶中自动化一些df表的结果,但我没有任何结果(我想要的是接下来出现的意思“^*”到表中的每个值)然后使用 RMarkdown。

我想得到什么:

我目前的丑陋和容易出错的修复:

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,但没有成功。

另一方面,假设崩溃有效,我将如何调试乳胶代码?因为我尝试使用 stargazerxtabletextreg,但在每个函数中它都无法识别 "\, , ^*"

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

我得到了什么?

【问题讨论】:

不应该是textsuperscript 而不是extsuperscript。此外,您的示例不可重现。请添加必要的library调用并在发布前尝试在空环境中运行示例(例如,您提供的示例代码中没有tab.out4的定义) 正如@dario 指出的那样。应该是\\textsuperscript。我无法解决您的胶水问题,但关于您的 stragzaer、xtable 问题:您表中的乳胶代码不会被解释为乳胶,而是打印为文本。我不是 xtable、stargazer 方面的专家……但在弄清楚这一点后,我在这里找到了解决方案 stat.ethz.ch/pipermail/r-help/2008-September/174366.html。试试print(xtable::xtable(n.tab, summary = F, header = F), sanitize.text.function = function(x)x) 我按照你提到的@stefan 做了,它可以工作,但是板子出来有点不同,你会如何解决它?谢谢。 @dario t 已经更正,对错误深表歉意。 嗨,克里斯蒂安,您所说的“板子出来有点不同”是什么意思。 (;
【参考方案1】:

我使用 paste0 提到的 here 函数和 @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",
                            "\\multicolumn3l\\footnotesize$^*$Indica el orden de retraso seleccionado \\\\",
                            "\\multicolumn3l\\footnotesize\\textitElaboración: Los autores",
                            sep = "")), comment=FALSE,
      sanitize.text.function = function(x)x)

【讨论】:

以上是关于如何使用 RMarkdown 使用胶水包进行折叠?的主要内容,如果未能解决你的问题,请参考以下文章

R语言学习2-RMarkdown入门使用

在 Shiny-Server 中发布后如何在 Rmarkdown 中启用表情符号

在带有胶水包的 gtsummary 中使用“modify_caption”时在表输出中显示变量名称

对齐多行“胶水”表达式

在 Word 文档中使用 DiagrammeR(使用 rMarkdown 生成)

即使在示例页面中,Shiny-server 也不显示 rmarkdown(已安装 rmarkdown 包)