是否有一种方法可以自动在R内将占星仪输出的第一列左对齐?

问题描述 投票:0回答:1

我需要在R中完全生成一个LaTeX表,以便在分析过程中如果表中的值发生变化,则表的格式将保持不变。

我正在将价值矩阵(如果有经济学家,则提供RCT的资产负债表)传递给观星人。它基本上可以使表格正确。但是,第一列居中对齐,我需要将其左对齐。

迄今为止,尚无在线解决方案。

我已经阅读了此解决方案(how to align stargazer table to the left when type="latex"?),并能够创建一个字符串,该字符串将“ ccccc”替换为“ lcccc”,将其粘贴到.tex文件后,确实可以使我的第一列左对齐。但是它不会将cat(out)的结果输出到.tex文件中。我可以将其复制粘贴到新文件中,但是每次我运行代码并为错误留出空间时,就必须为我为项目创建的每个表重复此操作。我需要我的代码可以完全复制。

我曾希望下载starpolishr(https://github.com/ChandlerLutz/starpolishr)软件包可以使我更轻松地在R中编辑代码,但是我还没有弄清楚如何以这种身份使用它。

这是我的矩阵

balance.table <- rbind(balance.table, num.kids, num.awc, f.stat, f.stat.prob)

使用stargazer导出到balance_table.tex

stargazer(balance.table, type="latex",
          title ="Balance table",
          digits = 2, 
          float = FALSE,
          header = TRUE,
          rownames = FALSE,
          out = paste0(exhibits, "balance_table.tex"))

由此,LaTeX输出的第一行是:

\begin{tabular}{@{\extracolsep{5pt}} ccccc} 

这是我根据上面链接的示例进行的尝试:

starout <- capture.output(
  stargazer(balance.table, type="latex",
            title ="Balance table",
            digits = 2, 
            float = FALSE,
            header = FALSE,
            rownames = FALSE,
            out = paste0(exhibits, "balance_table2.tex")))

starout <- sub(" ccccc", " lcccc", starout)
cat(starout) 

这将导致更新的LaTeX代码的第一行:

\begin{tabular}{@{\extracolsep{5pt}} lcccc} 

但是,我现在无法将其导出到LaTeX。输出是一个名为“ balance_table2.tex”的文件,但与“ balance_table.tex”相同,并且具有“ ccccc”而不是“ lcccc”。

是否有某种方法可以将cat()的结果导出到.tex文件?还是有一种方法可以使用starpolishr或其他完全可复制的方法进行对齐?

谢谢!

r stargazer
1个回答
0
投票

您可以在替换后使用writeLines(starout, "balance_table.tex")。有关某些替代解决方案,请参见此SO post

© www.soinside.com 2019 - 2024. All rights reserved.