5

我对 sweave 中的 echo 输出的宽度有疑问,我有一个包含大量文本的列表。问题是来自 R 的回声响应超出了 pdf 中的页面。我试过使用

<<>>=
options(width=40)
@

但这并没有改变任何东西。

一个例子:设置列表(不显示在乳胶中)。

<<echo=FALSE>>=
my_list <- list(example="Site location was fixed using a Silvia Navigator handheld GPS     in October 2003.  Point of reference used was the station Bench Mark. If the bench mark location was remote from the site then the point of reference used was changed to the 0-1 metre gauge. Bench Mark location was then recorded as a separate entry in the Site History section [but not used as the site location].\r\nFor a Station location map and all digital photograph's of the station, river reach, and site details see H:\\hyd\\dat\\doc.  For non digital photo's taken prior to October 2003 please see the relevant station file at Tumut office.")
@

并显示列表的条目。

<<>>=
my_list
@

有什么方法可以让我在不必用cat语句分解列表的情况下让它工作。

4

2 回答 2

3

您可以使用capture.output()来捕获列表的打印表示,然后使用writeLines()strwrap()显示此输出,包装得很好。当capture.output()返回一个包含对象打印表示的字符串向量时,我们可以将它们中的每一个都放在屏幕/页面上,但使用strwrap(). 这种方法的好处是结果看起来像是由 R 打印的。这是解决方案:

writeLines(strwrap(capture.output(my_list)))

产生:

$example
[1] "Site location was fixed using a Silvia Navigator
handheld GPS in October 2003.  Point of reference used
was the station Bench Mark. If the bench mark location
was remote from the site then the point of reference used
was changed to the 0-1 metre gauge. Bench Mark location
was then recorded as a separate entry in the Site History
section [but not used as the site location].\r\nFor a
Station location map and all digital photograph's of the
station, river reach, and site details see
H:\\hyd\\dat\\doc.  For non digital photo's taken prior
to October 2003 please see the relevant station file at
Tumut office."
于 2011-08-29T20:47:45.027 回答
1

从 2010 年 Mark Schwartz 发布到 rhelp 的帖子中:

cat(paste(strwrap(x, width = 70), collapse = "\\\\\n"), "\n")
于 2011-08-29T21:48:48.710 回答