我一直在阅读 R 源代码,试图了解它如何对帮助页面进行分页(例如?c
)。我认为它正在使用less
,但我无法找到执行此操作的功能。我想我可以做到system(gettextf("echo %s | less", my_text))
,但它不会在 Windows 中工作。
问问题
1075 次
3 回答
7
看看?page
和?file.show
:
page(runif(1e5))
于 2013-07-06T20:57:36.990 回答
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()
不起作用,但上述方法会起作用(我不知道为什么——它可能只是一个错误)。
于 2013-07-07T04:04:12.227 回答
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()
或类似的东西。
于 2019-02-09T04:14:40.057 回答