Dan Davison <dandavis...@gmail.com> writes: > Please note the following changes to the way that org-babel handles > file output. These may break existing org-babel files which use > the :file header argument. > > :file <filename> should be understood as saying "write the result > to <filename> and return a link to <filename>". > > This works for all languages. For graphics languages (e.g. ditaa, dot, > gnuplot) there is no change in behavior: "result" in the above is the > graphics, and a link to the image is placed in the org buffer. For > general-purpose languages (e.g. emacs-lisp, python, R, ruby, shell), > the "result" written to file is the normal org-babel result (string, > number, table). > > This is a backwards-incompatible change for R, which was previously > interpreting :file to mean "send graphics to file". I will send a > separate email concerning R.
Previously R understood :file <filename> to mean "save graphics to <filename>"[1]; now R behaves like other languages and sends the normal org-babel result to file (string, number, table). To tell R to save graphics[1] to file, use :results graphics. Some examples: Wrong! #+begin_src R :file img.png hist(rnorm(100)) "img.png is going to contain this string." #+end_src Use :results graphics save graphics: #+begin_src R :file img.png :results graphics hist(rnorm(100)) "But now img.png is going to contain graphics." #+end_src You may want to use `org-babel-default-header-args:R' to make this more convenient: #+begin_src emacs-lisp (setq org-babel-default-header-args:R '((:results . "graphics"))) #+end_src Alternatively the :results graphics header can be set in a property drawer for the subtree, or a #+babel: line, as usual. Now this will do what was intended #+begin_src R :file img.png hist(rnorm(100)) #+end_src Here is an example of saving something other than base graphics to file, and returning a link to the file. Note that :file is not used, and the filename must be returned. This could be used to save images created by non-base graphics libraries: #+begin_src R :results file :var file="savefile" write.something.to.file <- function(f) cat("hello", file=f) write.something.to.file(f=file) file #+end_src Dan * Footnotes [1] This only works for "base" graphics. > > In order to return a file link from a src block without telling babel > to save any results to that file, use :results <filename> and do not > use :file. The code block can of course write arbitrary content to > <filename>. > > Some examples: > > Save the output of ls -l as a .csv file (recall that :results value is > the default): > > #+begin_src sh :file dirlisting.csv :sep , > ls -l > #+end_src > > Send the text output of ls -l directly to file: > > #+begin_src sh :results output :file dirlisting.txt > ls -l > #+end_src > > Dan > > > _______________________________________________ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode