emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] sbe with :file header arg?


From: Eric Schulte
Subject: Re: [O] sbe with :file header arg?
Date: Fri, 07 Oct 2011 12:22:13 -0600
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

Myles English <address@hidden> 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/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]