【发布时间】:2014-12-03 12:01:30
【问题描述】:
我想以等宽字体打印使用stargazer() 生成的乳胶表,并且我想使用knitr 以可重现的方式执行此操作(即,无需手动乳胶编码)。我尝试定义一个名为mymono 的环境,然后通过\begin{} 和\end{} 将knitr 块包装在此环境中。这是行不通的;表格以默认字体样式打印。
\documentclass{article}
\newenvironment{mymono}{\ttfamily}{\par}
\begin{document}
<<lm, echo=FALSE>>=
df <- data.frame(x=1:10, y=rnorm(10))
library(stargazer)
lm1 <- lm(y ~ x ,data=df)
@
% reproducible
\begin{mymono}
<<table_texstyle, echo=FALSE, results='asis', message=FALSE>>=
stargazer(lm1, label="test")
@
\end{mymono}
\end{document}
我认为stargazer() 中除了font.size 之外没有字体设置。
# > sessionInfo()
# R version 3.0.2 (2013-09-25)
# Platform: x86_64-apple-darwin10.8.0 (64-bit)
# other attached packages:
# [1] stargazer_5.1
比将整个 table{} 包裹在新字体样式中更好的是仅包裹 tabular{} 以便标题保持默认样式。我不知道是否有办法以编程方式将乳胶代码插入stargazer() 输出。
【问题讨论】:
-
你可以
capture.output()stargazer 结果然后编辑它,在你想要的地方插入你想要的行。 -
是的,但这是不可重现的。或者您是否正在考虑其他方式来实现自动化?
-
为什么不能重现?写一个小函数来完成它。
-
capture.output()很清楚。对我来说,如何编写函数来获取这个字符向量并自动在正确的位置添加乳胶代码对我来说并不明显。也许用\begin{mymono}\begin{tabular}替换\begin{tabular}并用\end{tabular}\end{mymono}替换\end{tabular}的东西。我将不得不更多地考虑这一点。我仍然很好奇为什么我原来的帖子中的方法不起作用。如果我犯了一些小错误,在某些方面调整它会更容易。