如何分页R输出?

时间:2013-07-06 20:55:10

标签: r

我一直在阅读R源代码,试图了解它如何分页帮助页面(例如?c)。我认为它正在使用less,但我无法找到执行此操作的函数。我想我可以做system(gettextf("echo %s | less", my_text)),但它不适用于Windows。

3 个答案:

答案 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