如何让org-mode一致地执行代码块

时间:2013-03-06 18:06:25

标签: org-mode

我在组织模式文件的会话中运行R代码块,我通常可以按照预期让它们由C-c C-c执行。

我认为我放在文件顶部的相关属性行是

#+PROPERTY: session *R*
#+PROPERTY: cache yes
#+PROPERTY: exports both
#+PROPERTY: tangle yes

有时,按C-c C-c时没有任何反应。 AFAICT,这是一个看似随意的事件;相同的代码块可能会工作一次而另一次会失败。

当这样的块失败时,我确实看到结果回显到迷你缓冲区,但是在R会话中我没有看到任何结果(例如,在许多情况下我预期的新数据帧)。 / p>

如果按C-'编辑代码块,然后按每行上的Cj(或每个区域上的Cr),代码会执行,结果会正确回显到组织文件并显示在R中会话。

以下是一些示例代码块开始行:

#+begin_src R :results silent :exports code 

#+begin_src R :results value :colnames yes :exports both

我刚刚通过执行rm(list = ls()),运行代码块以及在会话中执行ls()来测试两者是否存在结果。

第一个块很简单:

#+begin_src R :results silent :exports code 
require(stringr)
require(ggplot2)
require(scales)
require(arm)
require(YaleToolkit)
require(stinepack)
require(mixtools)
require(lubridate)
source("utilities.R")
pf <- function (x,y) {
z <- sqrt(x * x + y * y)
return(x/z)
}
#+end_src

在两次测试中,它通过在R会话中查找pf来检测一次并且失败一次。

如果重要的话,我可以尝试生成一个经常失败的ECM,但我怀疑这可能是某个人看到并解决的常见设置或版本问题。它似乎与Org-mode code block evaluation有关,但似乎解决方案似乎是:导出结果。在大多数情况下,我使用:导出两者,这似乎涵盖了这种情况,并且,至少在某些情况下,我关心在会话中设置环境而不是导出到org文件。我永远不会通过org-mode传递数据;我只是在使用会话。

BTW,我在XP Pro 64上运行GNU Emacs 23.3.1上的org-mode 7.8.03。

0 个答案:

没有答案