组织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,
我非常感谢任何帮助。
答案 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")
的对象,该对象具有专门的
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
中运行代码是其他可能的解决方案。