在 R 代码块中格式化文本

10

我正在使用Rstudio按照以下说明制作幻灯片: http://rmarkdown.rstudio.com/beamer_presentation_format.html

我该如何定义文本大小、颜色和“流动”,使数字分为两列?

```{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代码块的输出只是普通的文本。也许确实可以将它们放在表格中,正如这篇文章所提到的:

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

但我不知道如何更改文本的大小和颜色。

更新2:

将原生HTML代码与R输出融合的想法非常有用。我之前没有想到过这一点。然而,这仅适用于输出HTML。对于PDF输出,我必须将原生Latex代码与R输出融合。例如,以下代码可使用“knitr PDF”输出:

```{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个回答

15
你正在使用results='asis',因此你可以简单地使用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>")
```
希望对你有所帮助。

2
“print” 可能无法工作,但 “cat” 可以。我已更新我的问题以反映您的答案。谢谢,我决定将赏金授予您。 - biocyberman

4

看起来您希望输出为PDF或HTML格式。 一个可能的选择是使用xtable包。它可以生成PDF或HTML格式的表格。然而,无法以(输出独立的)方式指定颜色。以下是一个示例。

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

另一个选项是来自pander软件包的pandoc.table函数。您需要安装pandoc二进制文件。如果您有RStudio,则已经安装了此文件。该函数会输出一些Markdown,然后可以通过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)
```

当你点击“knit HTML”时,它会生成一个漂亮的HTML文档。如果你将输出设置为pdf_document,则会生成一个漂亮的PDF文档。你可以编辑选项以更改输出 - 例如:

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

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

在幕后,knitr正在编写Markdown,而pandoc则将Markdown转换为您想要的任何格式。


你的回答还介绍了混合本地目标文档代码(即HTML / Latex)的想法。感谢您重新向我介绍“xtable”包。但正如您所说,格式颜色的部分并不清楚。 - biocyberman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接