2016-05-07 90 views
2

當我使用Sweave時,我喜歡texreg包裝,將漂亮的打印模型結果轉化爲乳膠。我搬到RMarkdown來生成word文檔,而且我面臨的問題是因爲我不能更好地回收舊的texreg代碼。使用Texmark與Rmarkdown獲取Word文檔

是否有任何方法來修改此塊在Word中有一個漂亮的打印輸出?

注:upgradesngr.fx是一個plm包對象。

{r summary,echo=FALSE,results='markup'} htmlreg(list(upgradesngr.fx), star.symbol = "\\*", center = TRUE, doctype = FALSE)

回答

4

在下文中,我假設你正在使用RStudio創建Word文檔。我相信這是一個軟件特定的問題。簡而言之:編織Word文檔時無法嵌入HTML代碼。

texreg包中的htmlreg函數創建HTML表(不是Markdown表)。在適當的Markdown文檔中,可以嵌入HTML,因爲這是Markdown規範的一部分。例如,你可以只寫你的降價文件中下面的代碼,這將有兩列被翻譯成表:

<table> 
<tr> 
<td>upper left</td> 
<td>upper right</td> 
</tr> 
<tr> 
<td>lower left</td> 
<td>lower right</td> 
</tr> 
</table> 

例如,如果你使用了「編織成HTML」中RStudio功能,或如果你使用任何其他降價編輯器/瀏覽器,這將產生以下結果:如果試試這個在RStudio減價文檔中,並從它創建一個HTML文檔

upper left upper right 
lower left lower right 

,它會工作。請注意,在RStudio中引擎蓋下使用的Pandoc引擎不允許縮進。

但是,如果您嘗試創建Word文檔,則文檔不會被解釋爲(正確的)Markdown代碼(就是說嵌入HTML是不可能的),即您將所有單元格垂直列出,而不是格式化爲表格。換句話說,使用「Knit to Word」函數不會解釋嵌入在Markdown中的HTML塊。結果將如下所示:

upper left 
upper right 
lower left 
lower right 

您可以在RStudio自己的文檔中嘗試。

現在,這正是「編織到字」功能沒有正確地將由htmlreg創建的表格嵌入到Word文件中的原因。

下面是一個可以正確使用「編織到HTML」功能的解決方案,因爲這個功能似乎正確地解釋了HTML代碼:首先,我們來做一些準備步驟。加載texreg包並估計簡單的線性模型用於說明目的:

```{R echo = FALSE, include = FALSE} 
library("texreg") 
ctl <- c(4.17, 5.58, 5.18, 6.11, 4.50, 4.61, 5.17, 4.53, 5.33, 5.14) 
trt <- c(4.81, 4.17, 4.41, 3.59, 5.87, 3.83, 6.03, 4.89, 4.32, 4.69) 
group <- gl(2, 10, 20, labels = c("Ctl", "Trt")) 
weight <- c(ctl, trt) 
lm.D9 <- lm(weight ~ group) 
``` 

然後創建一個HTML表如下:

```{r summary,echo = FALSE, results = "asis"} 
htmlreg(lm.D9, star.symbol = "\\*", center = TRUE, doctype = FALSE, caption = "") 
``` 

注意results = "asis"是必要在這裏。另請注意,htmlreg函數默認爲文檔類型生成一行,因爲該函數也可用於創建完整的HTML文檔。我們需要關閉它以使其工作。在你的例子中,你正確地逃脫了星標。結果將是嵌入在HTML文檔中的正確迴歸表。如果您現在使用「編織到字」功能,它也會包含表格內容,但就像在上面的HTML示例中一樣,它將簡單地將所有表格單元格列爲單獨的行並且沒有正確格式化爲表格。

也可以使用RStudio中的「編織爲PDF」功能通過使用LaTeX創建PDF文檔。在這種情況下,顯然你必須用LaTeX表替換HTML表。要做到這一點,使用下面的代碼而不是上面的:

```{r summary, echo = FALSE, results = "asis"} 
texreg(lm.D9, star.symbol = "\\*", center = FALSE, caption = "") 
``` 

最後,讓我注意,您可以通過創建一個解決方法的Word文檔。應該可以創建一個HTML文檔,然後在MS Word中打開或導入它。至少可以將htmlreg的輸出保存到一個文件中,並在Word中打開該文件,因此我認爲對於使用knitr創建的更長的HTML文檔,這應該是相同的。

相關問題