在knitr chunk中使用带有engine =“dot”的纯点非常简单,但你必须自己编写点代码。
<<r dot-ex, engine = "dot", echo=FALSE>>=
digraph test123 {
A -> B
}
@
我想要一个功能为我做这件事。
dotFun <- function() {
dotCode <- 'digraph test123 {
A -> B
}'
return(dotCode)
}
然后在一个类似于返回LaTeX代码的函数的knit chunk中调用它,并使用result ='as.is'编织
<<r dot-ex, engine = "dot">>=
cat(dotFun())
@
但这会导致:(knit_engines $ get(options $ engine))(选项)出错: 设置块选项结果='asis'会产生相同的错误消息。
有办法做到这一点吗?
答案 0 :(得分:1)
任何特殊原因必须在具有该引擎的knitr块内进行评估?为什么不直接从R进行一些系统调用呢?您可以将命令写入文件,并使用system
在该文件上调用dot
,并将结果读回R.
事实上,这是knitr
的作用。您可以非常轻松地使用knitr
dot
引擎并将其包装到您自己的函数中 - 请参阅
https://github.com/yihui/knitr/blob/master/R/engine.R#L144
答案 1 :(得分:1)
当前版本的knitr(v1.5)无法实现,但在下一个尚未发布的版本(v1.6)中也是如此。如果您使用development version on Github,您实际上可以通过code
选项将源代码分配给代码块,例如
<<dot-ex, engine = "dot", code = dotFun()>>=
@
news for v1.6中的更多内容。