如何在组织模式表中执行内联源块?

Ste*_*ano 4 org-mode

我希望在组织模式表中获得 src_R 块的输出:

| Variable | Value    |
|----------+----------|
| x        | src_R{x} |
Run Code Online (Sandbox Code Playgroud)

但是,当我导出为 PDF(通过 LaTeX)时,我得到的是文字 src_R{x} 而不是底层 R 会话中 x 变量的值。我可以在文本中使用相同的 src_R{x} 并且它按预期工作。

有没有办法支持表中的内联源代码?

(我看到过这个问题具有类似的标题:Codeblocks insidetables for org-mode,但主题不同。)

Ste*_*ano 5

感谢 Juancho 的提示(见评论),我在这里找到了答案:http://orgmode.org/worg/org-contrib/babel/intro.html#spreadsheet。我首先定义一个命名源块来执行 R 计算:

#+NAME: my-code
#+BEGIN_SRC R :results output
  message(10)
#+END_SRC
Run Code Online (Sandbox Code Playgroud)

(假设输出只是数字 10)。然后我将它插入到表中,如下所示:

| Variable | Value |
|----------+-------|
| Name     |       |
#+TBLFM: @2$2='(org-sbe my-code)
Run Code Online (Sandbox Code Playgroud)

评论:

  • 似乎 org-babel-execute 不再存在,文档使用 org-sbe,它适用于我的 9.0.x org-mode 版本。
  • 我已将代码输出包装在 message() 中,以避免 R 的额外输出。我尝试了 R 代码的各种标头参数(例如::results value raw),但我要么得到额外的括号(可能来自 lisp),要么得到错误。
  • 使用 org-sbe,您还可以将参数传递给代码,甚至其他代码块的输出。上面引用的文档对此进行了解释。