r - 如何在 markdown/knitr 中的消息中换行?

标签 r markdown r-markdown knitr

我想使用 markdown (knitr) 和 pdf 输出为 R 包创建一个小插图。我的一些函数生成的消息在控制台中被很好地分成几行。然而,在生成的 pdf 中,这些行不适合代码块的框,而是溢出。

我尝试在宽度= 80的message中使用strwrapwriteLines(参见示例)。它确实在正确的位置断行,但我必须在 writeLines 中使用 con = stdout() 才能查看 markdown pdf 中的输出。

con = stderr()(默认值)不显示该消息。但是,这样,控制台输出的格式不再与普通消息(在我的例子中为红色)相同,而是像普通输出(黑色)一样。

mes <- "A very, very, very, very, very, very, very, very, very, very, very, very, very, very long message."

# default settings 
message(mes)

# using writeLines and strwrap
message(writeLines(strwrap(mes, width = 80, con = stderr()))
message(writeLines(strwrap(mes, width = 80), con = stdout())

这是 R 控制台中的结果

console

在 Markdown pdf 中:

markdown pdf

我的首选解决方案不是格式化消息,而是找到正确的 markdown/knitr 技巧。

最佳答案

我不会使用writeLines,我会进行包装,然后将字符串传递给message。例如,

mes <- "A very, very, very, very, very, very, very, very, very, very, very, very, very, very long message."

# default settings 
message(mes)

# pasted together
message(paste(strwrap(mes, width = 80), collapse = "\n"))

每次都写起来很麻烦,所以如果你经常这样做,我会把它放在一个函数中:

wrapmessage <- function(mes, width = 80) 
 message(paste(strwrap(mes, width = width), collapse = "\n"))

然后像这样使用它:

wrapmessage(mes)      # 80 chars
wrapmessage(mes, 40)  # 40 chars

后者看起来像这样:

enter image description here

关于r - 如何在 markdown/knitr 中的消息中换行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55972128/

相关文章:

带有 R 的列表的所有对象中的 rowSums

在 R 中重新排序单列,而不指定所有列

r - 将向量列表划分为成对的后续向量

python - Flask-PageDown 和 MathJax

Vim 换行与 Markdown 冲突

r - 设置要在输出中显示的小数位数

r - 如何在 Rmarkdown 中将距离矩阵格式化为数组?

RMarkdown 从 bash block 访问参数

r - 有效地在时间序列中添加缺失值

markdown - 如何将另一个文件包含在 Hugo/Markdown 页面中?