【问题标题】:SWeave with non-R code chunks?使用非 R 代码块进行 SWeave?
【发布时间】:2011-02-17 18:00:59
【问题描述】:

我经常使用Sweave 来生成 LaTeX 文档,其中某些块是通过执行 R 代码动态生成的。这很好用 - 但也有可能有以不同方式执行的代码块,例如通过在 shell 中执行代码,或者通过运行 Perl,等等?能够混合起来会很有帮助,所以我可以做一些事情,比如运行一些 shell 命令来获取一些数据,运行一些 perl 命令来预处理它,然后运行 ​​R 命令来分析它。

当然,我可以使用所有 R 块并使用 system() 作为穷人的替代品,但这不会让阅读文档非常愉快。

【问题讨论】:

    标签: shell r sweave


    【解决方案1】:

    新事物(多语言、多格式)文档可能是dexy.it,例如这些guys at opengamma.org 用作后端。

    dexy 背后的Ana 也发表了很多关于它的演讲,所以也请看dexy blog

    【讨论】:

    • 很高兴知道,我去看看。
    【解决方案2】:

    它与 Sweave 没有直接关系,但 org-babel,它是 Emacs org-mode 的一部分,允许在一个文件中混合不同语言的代码块,将数据从一个块传递到另一个块,执行它们,并从输出生成 LaTeX 或 HTML 导出。

    您可以在此处找到有关 org-mode 的更多信息:

    http://www.orgmode.org/

    看看 org-babel 是如何工作的:

    http://orgmode.org/worg/org-contrib/babel/

    【讨论】:

    • Ken,你肯定会想看看 org-mode,它支持大约 30 种语言,而且不仅仅是嵌入代码(尽管它也很擅长) )。下周,我最终将在我的网站上发布我的扩展,以使用 R 的 org-mode,我会在什么时候通知你。
    • 非常好,我现在正在使用 org-mode,它看起来很棒。不过,这会导致我提出更多问题,例如:stackoverflow.com/questions/5144862/… =)
    【解决方案3】:

    除了通过 R 的外语界面(如果支持的话,可能通过inline)或system() 之外,肯定没有简单的方法可以做到这一点。对于它的价值,我只会使用system();这应该很容易。

    您可以看到this previous question about having a Sweave equivalent for Python,其中一位受访者实际上创建了一个单独的界面。这可以让您了解嵌入可能尚不支持的其他语言需要什么。至少,您必须对 Sweave 驱动程序进行重大修改。

    【讨论】:

      【解决方案4】:

      你知道 emacs”org-mode,更具体地说,Babel?如果你已经知道 Emacs 或者愿意切换到 Emacs,那么 org-mode 和 Babel 就是你问题的答案。

      例如,我目前正在处理一个包含一些 shell 脚本的文档,使用 R 进行计算并使用点 (graphviz) 创建流程图。 Org-mode 可以导出多种格式,例如LaTeX(这就是我使用的)。

      【讨论】:

      • 太棒了。我已经是 emacs 用户(实际上是 Aquamacs),所以这很合适。奇怪的是,多格式格式隐藏在似乎是任务管理模式中!
      【解决方案5】:

      StatWeave 项目使用 java 而不是 R 来进行编织,但会运行多个程序而不仅仅是 R。我不知道让它来执行 Perl 或其他类似的程序有多难,但主页显示它已经与 R、SAS、Stata 等兼容:

      http://www.cs.uiowa.edu/~rlenth/StatWeave/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-13
        • 2018-09-07
        相关资源
        最近更新 更多