Michael Hannon <jm_han...@yahoo.com> writes: > Greetings. I have a question that relates to the use of the :cache option in > Babel sessions using R. > > Here's the relevant configuration information: > > Emacs : GNU Emacs 23.2.1 (x86_64-redhat-linux-gnu, GTK+ Version 2.24.4) > of 2011-05-23 on x86-12.phx2.fedoraproject.org > Package: Org-mode version 7.7 (release_7.7.328.g1a97) > > I've appended the text of a file that exhibits the issue, which is the > following. If I explicitly evaluate a given code block, using, let's say, C-c > C-c, I get the results stuck into the Org file, as in the first source-code > block below. If I then repeatedly export the file (to PDF, HTML, etc.), I get > the cached results in the exported document. For instance, the mean of the > random variable does not change as I repeatedly export the file. > > If for some reason I have NOT explicitly evaluated a given code block, as with > the second code block below, then during export I see a message "Evaluating > code block" (or similar), indicating that Babel is NOT using a cached version, > and no cacheable output is produced as a result, meaning that the entire > calculation will be repeated during the next export. For instance, the mean > of the random variable will be different every time I export the file. >
Hi Mike, This is the expected behavior. Org-mode files are just plain text, so if the results are not saved in the Org-mode file then there is no place to cache them. Since Org does not change the contents of Org-mode files the only way to save the result of a code block is to interactively evaluate the code block -- there is no way to generate and save cached results during export. > > I guess I can see the logic of this, but I wonder if there is some way to > instruct Babel to automatically cache the output of any code blocks it > evaluates, i.e., via a header argument or elisp variable or ... . > Nope, in the past we have played with things like an in-memory variable, but have abandoned such things as they would move away from the "just plain text" spirit of Org-mode, would require external storage on disk, and could ultimately lead to more confusing behavior than the current situation. > > Thanks, > > -- Mike > > P.S. Is the SHA1(?) identifier for the results a new feature? > No, this is how Babel knows if the contents of the code block have changed and hence if the cached results are still valid. Best -- Eric > > ---------- > > #+TITLE: > #+AUTHOR: > #+DATE: > > #+STARTUP: hideblocks > #+BABEL: :session *R* :cache yes :results output verbatim :exports both > :tangle yes > > * This is a test > > #+begin_src R > > x = rnorm(10) > mean(x) > > #+end_src > > #+results[9b9372488662083d0d211b9aad9c2985faba20cd]: > : [1] -0.07904561 > > * Here's a second test > > #+begin_src R > > x = rnorm (50) > summary(x) > > #+end_src -- Eric Schulte http://cs.unm.edu/~eschulte/