From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Schulte Subject: Re: sbe with :file header arg? Date: Fri, 07 Oct 2011 12:22:13 -0600 Message-ID: <87sjn4r7ai.fsf@gmail.com> References: <87r52oy9n5.fsf@bill.home> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([140.186.70.92]:49083) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RCF3s-00032C-5K for emacs-orgmode@gnu.org; Fri, 07 Oct 2011 14:22:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RCF3q-0006tR-LN for emacs-orgmode@gnu.org; Fri, 07 Oct 2011 14:22:20 -0400 Received: from mail-yx0-f169.google.com ([209.85.213.169]:57454) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RCF3q-0006tN-AF for emacs-orgmode@gnu.org; Fri, 07 Oct 2011 14:22:18 -0400 Received: by yxi19 with SMTP id 19so4628910yxi.0 for ; Fri, 07 Oct 2011 11:22:17 -0700 (PDT) In-Reply-To: <87r52oy9n5.fsf@bill.home> (Myles English's message of "Fri, 07 Oct 2011 18:49:34 +0100") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Myles English writes: > Hello, > > I think I have one case of strange behaviour and one feature request, if it > isn't already possible. > > I would like to make one plot per row of a table. This is useful because the > contents of the row may be parameters in an R session, and a link to the > resulting plot can be put in the last cell of each row. > Hi Myles, I've just updated the sbe macro so that it is now possible to pass header arguments through to the called code block. Specifically, if the value immediately following the code block name in an sbe call is a string rather than a variable specification list it will be added to the code blocks header arguments. See the example below. #+source: test-sbe #+begin_src emacs-lisp :var x=0 :var y=0 (+ x y) #+end_src | 1 | 2 | :file eric.png | eric.png | #+TBLFM: @1$4='(sbe test-sbe $3 (x $1) (y $2)) | 1 | 2 | :file eric.png | 3 | #+TBLFM: @1$4='(sbe test-sbe (x $1) (y $2)) Hope this helps -- Eric > > The following source block makes a plot: > > #+source: plotTest > #+headers: :var A="A" :var B="B" :var C="C" > #+begin_src R :file nofile.png :results graphics :session b > plot( 1,1, ylab=A, xlab=B) > text(0.8,0.8,C) > #+end_src > #+results: plotTest > [[file:nofile.png]] > > and the source block may be called using this table: > > #+TBLNAME: testtbl > | "5" | "X" | "Y" | nofile.png | > | 7 | P | "Q" | nofile.png | > #+TBLFM: $4='(sbe plotTest (A $1)(B $2)(C $3)) > > executing that shows up the strange behaviour because the R interpreter > contains: > >> > png(filename="nofile.png") >> A <- "5" >> B <- "X" >> C <- "Y" >> plot( 1,1, ylab=A, xlab=B) >> text(0.8,0.8,C) >> dev.off() > null device > 1 >> > png(filename="nofile.png") >> A <- 7 >> B <- "/home/myles/org/org/nofile.png" <------ STRANGE, NO? >> C <- "Q" >> plot( 1,1, ylab=A, xlab=B) >> text(0.8,0.8,C) >> dev.off() > null device > 1 > > Now the feature request; would it be possible to pass a :file header > based on a value in the table, like this? > > #+TBLNAME:testtwo > | a.png | "G" | "E" | "F" | [[img/a.png]] | > #+TBLFM: $4='(sbe plotTest[:file img/$1] (A $2)(B $3)(C $4)) > > Thanks, > > Myles > -- Eric Schulte http://cs.unm.edu/~eschulte/