针织书,p。 118,\ S 12.3.5,举例说明如何通过修改来抑制长输出 输出块挂钩,但它根本不是通用的,因为它对所有块都是全局的。
我试图概括一下,允许一个块选项output.lines
,如果为NULL,则没有
效果,但否则只选择并打印第一行output.lines
行。但是,这个版本
当我尝试它似乎没有任何影响,我无法弄清楚如何告诉为什么。
更一般地说,我认为这很有用,可以包含在knitr中,如果有的话会更好
可以使用output.lines=3:15
指定一系列行,例如echo=
。
# get the default output hook
hook_output <- knit_hooks$get("output")
knit_hooks$set(output = function(x, options) {
lines <- options$output.lines
if (is.null(lines)) {
hook_output(x, options) # pass to default hook
}
else {
x <- unlist(stringr::str_split(x, "\n"))
if (length(x) > lines) {
# truncate the output, but add ....
x <- c(head(x, lines), "...\n")
}
# paste these lines together
x <- paste(x, collapse = "\n")
hook_output(x, options)
}
})
测试用例:
<<print-painters, output.lines=8>>=
library(MASS)
painters
@
答案 0 :(得分:2)
实际上,此解决方案确实有效。我的实际测试示例存在缺陷。也许其他人会觉得这很有帮助。