在knitr输出中文本包裹长字符串(RStudio)

时间:2014-06-03 16:45:26

标签: r knitr rstudio textwrapping r-markdown

我有一个长的矢量字符串(DNA序列),我想要添加到我的knitr报告输出中的几千个连续字符。 RStudio在控制台中完美地处理文本包装,但是当我生成knitr html输出时,我只能看到一行文本,它只是在页面上运行。

RStudio输出

knitr输出

任何调整knitr输出以包装文本的方法?

感谢。

1 个答案:

答案 0 :(得分:6)

我建议你试试R Markdown v2。默认的HTML模板为您进行文本换行。这是通过HTML标记pre / code的CSS定义实现的,例如word-wrap: break-word; word-break: break-all;。这些定义实际上来自Bootstrap(目前 rmarkdown 使用Bootstrap 2.3.2)。

您仍在使用第一版R Markdown,即markdown包。您当然可以使用一些自定义CSS定义来实现相同的目标,它只需要您了解有关HTML / CSS的更多信息。

另一个解决方案是使用我在下面写的函数str_break()手动中断长字符串:

A helper function `str_break()`:

```{r setup}
str_break = function(x, width = 80L) {
  n = nchar(x)
  if (n <= width) return(x)
  n1 = seq(1L, n, by = width)
  n2 = seq(width, n, by = width)
  if (n %% width != 0) n2 = c(n2, n)
  substring(x, n1, n2)
}
```

See if it works:

```{r test}
x = paste(sample(c('A', 'C', 'T', 'G'), 1000, replace = TRUE), collapse = '')
str_break(x)
cat(str_break(x), sep = '\n')
```