2014-10-08 30 views
3

我想用等寬字體打印用stargazer()生成的乳膠表,並且我想以與knitr(即,沒有手動乳膠編碼)的可重現方式生成乳膠表。我試圖定義一個名爲mymono的環境,然後通過\begin{}\end{}將編織塊包裹在此環境中。這是行不通的;表格以默認字體樣式打印。使用針織機時用於觀星乳膠表的新字體樣式

\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} 

我不認爲這是除了font.sizestargazer()字體設置。

# > 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()輸出中。

+0

你可以'capture.output()'觀星結果,然後編輯它,插入你想要的地方你想要的線。 – Gregor 2014-10-08 18:55:06

+0

是的,但那不會重現。或者你是否想過其他方式來實現這一點? – 2014-10-08 21:11:50

+0

爲什麼它不可重現?寫一個小功能。 – Gregor 2014-10-08 21:15:47

回答

2

太長的評論,所以這裏是一個答案的開始。使用該問題的模型:

\documentclass{article} 
\begin{document} 

<<lm, echo=FALSE, message=FALSE, include=FALSE>>= 
df <- data.frame(x=1:10, y=rnorm(10)) 
library(stargazer) 
lm1 <- lm(y ~ x ,data=df) 

tabular_tt <- function(orig.table) { 
    library(stringr) 
    tabular.start <- which(str_detect(orig.table, "begin\\{tabular\\}")) 
    tabular.end <- which(str_detect(orig.table, "end\\{tabular\\}")) 
    new.table <- c(orig.table[1:(tabular.start - 1)], 
        "\\texttt{", 
        orig.table[tabular.start:tabular.end], 
        "}", 
        orig.table[(tabular.end + 1):length(orig.table)]) 
    return(new.table) 
} 
@ 

<<print, results='asis', echo=FALSE>>= 
cat(tabular_tt(capture.output(stargazer(lm1, label="test"))), sep="\n") 
@ 

\end{document} 

您可以根據需要輕鬆調整它。如果你遇到麻煩,我只能通過在LaTeX中玩一個小玩具表來確保你的目標LaTeX語法是正確的,也許是在你編織時生成的tex文件。

您可能需要使功能cat(new.table, sep = "\n")獲得它以正確地將輸出到knitr文檔中。

+0

謝謝,@Gregor。我認爲'browser()'會讓我的代碼中斷。運行以下命令將會給我正確的輸出以傳遞給你的函數:cat(capture.output(stargazer(lm1,label =「test」)),sep =「\ n」)'。使用'browser()',它會中斷。沒有它,我得到'1:(tabular.start - 1):長度爲0的參數的錯誤。 – 2014-10-08 21:56:05

+0

哎呀,在那裏有'browser()'進行調試。我沒有在Rnw文檔中嘗試,但是在我的R控制檯中,它現在在我的問題中按原樣工作。 – Gregor 2014-10-08 22:02:01

+0

我不得不做一個小小的改變(爲'\ textt'增加第三個't')來使它工作。一旦完成,我添加了knitr塊代碼來生成pdf。看起來很棒。非常感謝。 – 2014-10-08 22:20:16