以字符串形式返回点(graphviz)代码的Knit函数

以字符串形式返回点(graphviz)代码的Knit函数,r,graphviz,knitr,dot,R,Graphviz,Knitr,Dot,在knitr块中使用engine=“dot”很简单,但您必须自己编写点代码 <<r dot-ex, engine = "dot", echo=FALSE>>= digraph test123 { A -> B } @ = 有向图test123{ A->B } @ 我想要一个函数来为我做这件事 dotFun <- function() { dotCode <- 'digraph test123 { A

在knitr块中使用engine=“dot”很简单,但您必须自己编写点代码

<<r dot-ex,  engine = "dot",  echo=FALSE>>=
digraph test123 { 
          A -> B
}
@
=
有向图test123{
A->B
}
@
我想要一个函数来为我做这件事

dotFun <- function() {
  dotCode <- 'digraph test123 { 
          A -> B
          }'
  return(dotCode)
}

dotFun是否有任何特殊原因必须在具有该引擎的knitr块中对此进行评估?为什么不直接从R调用一些系统调用呢?您可以将命令写入文件,并使用
system
调用该文件上的
dot
,然后将结果读回R

事实上,
knitr
就是这样做的。您可以很容易地使用
knitr
dot
引擎,并将其包装成自己的函数——请参阅
.knitr的当前版本(v1.5)无法实现此功能,但在尚未发布的下一个版本(v1.6)中将实现此功能。如果使用,实际上可以通过
code
选项将源代码分配给代码块,例如

<<dot-ex,  engine = "dot", code = dotFun()>>=
@
=
@

有关这方面的更多信息,请参见。

我使用这种方法在r函数中创建表和列表,然后通过results=“as.is”输出它们。这似乎是最简单的方法。我试着遵循一惠的源代码,但我的r编码技能似乎缺乏。你知道还有其他这样的例子吗?例如,运行外部命令,将生成的pdf作为图形插入LaTeX代码中,以便进一步编织。这是一个好消息。非常感谢你与Knitr的出色合作。
<<dot-ex,  engine = "dot", code = dotFun()>>=
@