在R代码块中格式化文本

时间:2014-11-08 16:19:43

标签: r markdown rstudio knitr

我在Rstudio中按照以下说明制作了一些幻灯片: http://rmarkdown.rstudio.com/beamer_presentation_format.html

如何定义文字大小,颜色和" flow"以下数字分为两列?

```{r,results='asis', echo=FALSE}
rd <- sample(x=1e6:1e7, size = 10, replace = FALSE)
cat(rd, sep = "\n")

```

输出是HTML(ioslides)或PDF(Beamer)

更新

目前上面的代码只会提供类似下面的内容

6683209
1268680
8412827
9688104
6958695
9655315
3255629
8754025
3775265
2810182

我无法改变文字大小,颜色或将它们放入表格中。 R codechunk的输出只是纯文本。也许有可能将它们放在表格中,如本文所述:

http://tex.aspcode.net/view/635399273629833626273734/dynamically-format-labelscolumns-of-a-latex-table-generated-in-rknitrxtable

但我不了解文字大小和颜色。

更新2:

将原生HTML代码编织为R输出的想法非常有用。我没有想到这一点。但这只适用于我想输出HTML的情况。对于PDF输出,我必须用R输出编织本机Latex代码。例如,以下代码使用&#34; knitr PDF&#34;输出:

```{r,results='asis', echo=FALSE}
cat("\\textcolor{blue}{") 
rd <- sample(x=1e6:1e7, size = 10, replace = FALSE) 
for (n in rd) {
cat(paste0(n, '\\newline \n')) } 
cat("}")
```

2 个答案:

答案 0 :(得分:9)

您正在使用结果=&#39; asis&#39;因此,您只需使用print()和格式化标记即可。如果您希望文本为红色,只需执行以下操作:

```{r,results='asis', echo=FALSE}
print("<div class='red2'>")
rd <- sample(x=1e6:1e7, size = 10, replace = FALSE)
cat(rd, sep = "\n")
print("</div>")
```

希望它有所帮助。

答案 1 :(得分:3)

听起来好像您希望输出为PDF或HTML。 一种可能性是xtable包。它以PDF或HTML格式生成表格。但是,没有(与输出无关的)方式来指定颜色。这是一个例子。

xt <- xtable(data.frame(a=1:10))
print(xt, type="html")
print(xt) # Latex default

另一个选项是pandoc.table包中的pander函数。您需要安装pandoc二进制文件。如果你有RStudio,你已经有了。该函数会发出一些降价,然后可以通过pandoc转换为HTML或PDF。

以下是您如何在RStudio中使用它。创建一个这样的RMarkdown文档:

---
title: "Untitled"
author: "You"
date: "20 November 2014"
output: html_document
---


```{r,  results='asis'}
library(pander)
tmp <- data.frame(a=1:10,b=1:10)
pandoc.table(tmp)
```

当您点击“编织HTML”时,它会吐出一个漂亮的HTML文档。如果您将输出更改为pdf_document,它将吐出一个漂亮的PDF。您可以编辑选项以更改输出 - 例如

pandoc.table(tmp, emphasize.strong.rows=c(2,4,6,8,10))

这将适用于PDF或HTML。 (但仍然没有改变颜色的选项。家庭作业:修复pandoc.table以允许任意颜色。)

在幕后,knitr正在写降价,而pandoc正在将降价转换为您喜欢的任何内容。