概述
灵感来自Sweave公司,的针织物该包被设计为用于动态报告生成的透明引擎使用R,并将其他附加软件包中的功能组合到一个软件包中(针织物≈Sweave+cacheSweave+pgfSweave+/weaver+动画::saveLatex()
+R2HTML::RweaveHTML()
+highlight::HighlightWeaveLatex()
+0.2*酿造+0.1*SweaveListingUtils+更多)。
- 透明性意味着用户可以完全访问每一条输入和输出,例如。,
1 + 2
生产[1] 3
在R端子中,以及针织物可以让用户决定是否将1 + 2
之间\开始{逐字}
和\结束{逐字}
,或<div class=“rsource”>
和</div>
,然后放置[1] 3
在里面\开始{Routeput}
和\结束{路由}
; 请参阅挂钩第页了解详细信息。
- 针织物通过运行R代码尝试与用户的期望保持一致就像粘贴在R端子中一样,例如。,
q图(x,y)
直接生产情节(无需打印()
),以及全部的代码块中的绘图将默认情况下写入输出。
- 类似的程序包pgf转向和缓存Sweave添加了有用的功能Sweave(高质量tikz图形和缓存),以及针织物有简化了实现。
- 的设计针织物允许任何输入语言(例如R、Python和shell脚本)和任何输出标记语言(例如,LaTeX、HTML、Markdown、,AsciiDoc和reStructuredText)。
此软件包开发于github; 对于安装说明和常见问题解答,请参阅自述文件.本网站是文件针织物,您可以找到主要的手册,的图形手册和其他演示/示例在这里。为了更有组织性参考,请参见针织书籍.
动机
Swave是一个聪明而新颖的Literate Programming实现。它的专业问题是它很难扩展。这个针织物程序包尝试将文档编织的整个过程模块化为可管理的小文档函数,使其更易于维护和扩展(例如,易于支持HTML输出)。另一方面,针织物有许多内置功能,应该不需要攻击这个包的核心组件。由顺便说一下,Swave手册中的几个常见问题在针织物直接。
让我们改变我们对项目建设的传统态度:与其想象我们的主要任务是指导计算机做什么,让我们集中精力向人类解释我们希望计算机做什么这样做。
-Donald E.Knuth,《识字编程》,1984年
功能
这些想法是从其他包中借用的,其中一些是重新实现的以不同的方式(例如缓存)。选定的功能列表包括:
-
忠实的输出:使用评价作为后端评估R代码,针织物写下您在R终端中看到的所有内容默认情况下,包括打印结果、绘图甚至警告、消息以及错误(严重时不应忽略计算,尤其是警告)
- 一个小问题是,对于基于网格的图形包,例如ggplot2或晶格,用户经常忘记
打印()
打印对象,因为它们可以在R端子中获得输出打印()
惯性导航与制导;在里面针织物,你得到的是你期望的
-
内置缓存:类似这样的想法缓存Sweave但是针织物直接使用底座R函数实现缓存和延迟加载,以及另一个重要的不同之处在于缓存的块仍然可以有输出(在缓存Sweave,缓存的块不再有任何输出,即使您显式地打印()
一个对象;针织物实际上也会缓存块输出)
-
格式化R代码:格式R包用于重新格式化R自动编码(换行、添加空格和缩进等),无需牺牲评论作为keep.source=假
做
-
直接支持20多种图形设备:dev='CairoPNG'
在区块选项中,可以切换到CairoPNG()
中的设备开罗一秒钟内;具有dev=“提示”
,的tikz()
中的设备tikz设备使用;可以还有比这更容易的吗?这些内置设备(严格来说,包装器)使用英寸作为单位,甚至对于位图设备(像素被转换选项为英寸数字功率接口
,默认为72)
-
图形更具灵活性:
- 打印输出文档中的宽度和高度可以是额外的指定(
图.宽度
选项适用于图形设备,并且外部宽度
用于输出文档;认为out.width='.8\\textwidth'
)
- 图的位置可以重新排列:它们可以精确地出现在它们被创建的地方,或一起到达块的末尾(选项
fig.show=“保持”
)
- 每个代码块记录多个图,除非您真的想仅保留最后一个绘图(选项
fig.keep='last'
)
-
R代码不仅可以来自输入文档中的代码块,还可以来自可能来自外部R脚本,这样可以更容易地将代码作为你写的文件(这对LyX特别有利)
-
对于高级用户,仍然可以进一步定制:
- 可以定义解析R代码的正则表达式,即您不需要必须使用
<<>>=
和@
或\Sexpr(Sexpr){}
; 如果你喜欢,你可以用任何模式,例如。,%%开始.rcode
和%%结束.rcode
- 可以定义挂钩来控制输出;例如,你可能想把红色粗体文本中的错误,或者您希望源代码为斜体,等等;钩子也可以定义为在代码块之前或之后执行,并且有无限的可能性来扩展这个包的功能通过挂钩(例如动画、rgl 3D绘图等)
为创造优美的产量和提高默认情况下的可读性。例如,突出显示代码块并将其放入LaTeX中的阴影环境具有非常浅的灰色背景(装框架的包),以便他们能够脱颖而出其他文本中的一点。希望阅读体验比逐字记录
或逐字逐句
环境。前导字符>
和+
输出中的(称为提示)是不默认情况下添加(您可以将其后面的提示=真
尽管如此)。我发现当我读取输出文档,因为复制和运行这些字符弄乱的代码。
致谢
我感谢《Swave》的作者,pgf转向,缓存Sweave,酿造,除皱,R2HTML,tikz设备,突出显示,消化,评价,氧气2当然,R,因为许多鼓舞人心的想法和工具。我真的很感激反馈来自许多早期测试人员。此包是基于除皱.
FOAS公司
针织物自豪地加入了开放存取基础统计(FOAS)。FOAS是一项非营利性公共福利以推广自由软件、开放存取为全球使命的公司出版和可复制的统计研究。