7

组织 8.2.10 Emacs 24.5.1 OSX 10.10.3

#+BEGIN_SRC R    
1 + 2
#+END_SRC

#+RESULTS:
: 3

但与

#+BEGIN_SRC R
  x <- rnorm(100)
  summary(x)
#+END_SRC

#+RESULTS:

“代码块没有输出”并且 *Messages* 缓冲区包含:

Error reading results: (beginning-of-buffer)
Code block produced no output.

我不确定为什么我没有看到第二个示例的任何输出。它在我机器上的 R 安装中运行 find,

我将非常感谢任何帮助。

4

1 回答 1

13

添加:results output到标题行,例如

#+BEGIN_SRC R :results output
  x <- rnorm(100)
  summary(x)
#+END_SRC

#+RESULTS:
:     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
: -2.63500 -0.42370  0.02539  0.04136  0.48370  1.92000 

Org可以通过两种不同的方式从代码块中捕获结果

以下选项是互斥的,并指定应如何从代码块中收集结果。

  • value这是默认设置。结果是代码块中最后一条语句的值。此标头参数将评估置于功能模式。请注意,在某些语言(例如 Python)中,使用此结果类型需要return在源代码块的主体中​​包含一条语句。例如,:results value

  • output结果是在代码块执行期间打印到 STDOUT 的所有内容的集合。此标头参数将评估置于脚本模式中。例如,:results output

由于您的第一个块返回一个常规值,因此它无需指定任何内容即可:results使用默认value设置。

您的第二个块返回一个必须显式打印的值

默认方法返回一个c("summaryDefault", "table")具有专门print方法的类对象。

使用特殊方法返回值的 R 代码print必须在 Org 中特殊处理(强调我的):

如果源代码块使用基于网格的 R 图形,例如 lattice 和 ggplot2 包,则必须注意 print() 图形对象、指定:results output或运行 a 中的代码:session这是因为来自 lattice 和 ggplot2 的图形函数返回的对象必须使用 print 函数显式打印才能看到它们。这在交互式运行时会自动发生,例如 ,:session但在另一个函数中调用时,它不会。方式:results value被定义为操作,device和ggplot2函数调用被包装在一个main函数中,除非专门打印对象,否则不会产生输出。

如前所述,在 a 中显式调用print和运行代码:session是其他可能的解决方案。

于 2015-06-28T15:16:59.497 回答