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

时间:2015-06-28 12:47:16

标签: r emacs org-babel

组织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:

&#34;代码块没有产生输出&#34; 并且* Messages *缓冲区包含:

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

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

我非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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 

组织can capture results from code blocks in two different ways

  

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

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

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

  •   

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

你的第二个区块returns a value that must be explicitly printed

  

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

R code that returns values with specialized print methods must be treated specially in Org(强调我的):

  

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

如上所述,明确调用print并在:session中运行代码是其他可能的解决方案。