没有来自使用R的org-babel代码的输出

use*_*871 4 emacs r org-babel

组织8.2.10 Emacs 24.5.1 OSX 10.10.3

#+BEGIN_SRC R    
1 + 2
#+END_SRC

#+RESULTS:
: 3
Run Code Online (Sandbox Code Playgroud)

但随着

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

#+RESULTS:
Run Code Online (Sandbox Code Playgroud)

"代码块没有产生输出",*Messages*缓冲区包含:

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

我不知道为什么我没有看到第二个例子的任何输出.它在我的机器上的R安装中运行find,

我会非常感谢任何帮助.

Chr*_*ris 9

添加: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 
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

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

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

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

如上所述,显式调用print和运行代码:session是其他可能的解决方案.