我一直在阅读R源代码,试图了解它如何分页帮助页面(例如?c
)。我认为它正在使用less
,但我无法找到执行此操作的函数。我想我可以做system(gettextf("echo %s | less", my_text))
,但它不适用于Windows。
答案 0 :(得分:7)
查看?page
和?file.show
:
page(runif(1e5))
答案 1 :(得分:2)
+1到@sgibb,page()
非常有用。在某些情况下,我想要使用更复杂的解决方案。您还可以将?sink与?file.show结合使用:
sink(file="tempSink", type="output")
...
# various commands
...
sink()
file.show(file="tempSink", delete.file=TRUE, title="my output")
例如,page()
仅显示一个输出,但您可能希望一起查看几个输出。我也注意到有时page()
不起作用,但上面的意思(我不知道为什么 - 它可能只是一个错误)。
答案 2 :(得分:0)
请记住,对于page()
,您需要指定method="print"
,以获取在提示符下看到的可读格式:
> smry = summary(...)
> page(smry) # this is incomprehensible
structure(list(`Response Y1` = structure(list(call = lm(formula = Y1 ~
designmatrix + 0), terms = Y1 ~ designmatrix + 0, residuals = new("VectorSpaceModel",
.Data = structure(c(0.0787047361879546, -1.45136789927732,
...
> page(smry, method="print") # much better
Response Y1 :
Call:
lm(formula = Y1 ~ designmatrix + 0)
Residuals:
[,1]
Min -5.48880
...
如果您不希望在看第一行之前就等整个坏东西都完成输出,请尝试以下操作:
> capture.output(smry, file=pipe("less"))
对于我来说,它产生的结果与page(.., method="print")
相同,但是第一行立即显示,而不是在进行静默缓冲4秒钟后出现(对于此特定示例)。
有时,有时在与capture.output
和朋友玩耍之后,您发现在R提示符下输入的内容停止产生输出,因此您需要调用sink()
或something similar。