我有一个长的矢量字符串(DNA序列),我想要添加到我的knitr报告输出中的几千个连续字符。 RStudio在控制台中完美地处理文本包装,但是当我生成knitr html输出时,我只能看到一行文本,它只是在页面上运行。
RStudio输出
knitr输出
任何调整knitr输出以包装文本的方法?
感谢。
答案 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')
```