emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [Orgmode] [org-babel] Feature request: Get a scalar for "data=exampl


From: Eric Schulte
Subject: Re: [Orgmode] [org-babel] Feature request: Get a scalar for "data=example-table[0, 1]"
Date: Wed, 21 Apr 2010 09:43:54 -0600
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

Hi Darlan,

Darlan Cavalcante Moreira <address@hidden> writes:

> In the org-babel documentation we see that one can pass a single element
> from a table to a babel source block with
> ,----
> ! :var data=example-table[0,1]
> `----
>
> I assumed that I would get a scalar value, but it seems that I still get a
> table (but with only one element). For instance, if I have the table below
>
> #+TBLNAME: MyTable
>  |   X |  Y |
>  |-----+----|
>  |   0 |  0 |
>  |   1 |  1 |
>  |   2 |  4 |
>  |   3 |  9 |
>  |   4 | 16 |
>  |   5 | 25 |
>  |-----+----|
>  | Sum | 55 |
>  #+TBLFM: $2=$1*$1::@8$2=vsum(@address@hidden)
>
> then the code in python to print the value of sum returns
>
> ,----
> ! #+begin_src python :var sum=MyTable[9,1] :results output :exports none
> !    print sum
> ! #+end_src
> !
> ! #+results:
> ! : [[55]]
> `----
>
> but I would expect to get only 55, since I'm getting a specific element in
> MyTable and not a sub-table.
>

I see.  Yes I agree it would be more intuitive if we convert trivial
lists to scalars.  I'm pushing up this change to the indexing behavior,
thanks for the suggestion!

Now your example above behaves as follows...

--8<---------------cut here---------------start------------->8---
#+TBLNAME: MyTable
 |   X |  Y |
 |-----+----|
 |   0 |  0 |
 |   1 |  1 |
 |   2 |  4 |
 |   3 |  9 |
 |   4 | 16 |
 |   5 | 25 |
 |-----+----|
 | Sum | 55 |
 #+TBLFM: $2=$1*$1::@8$2=vsum(@address@hidden)

#+begin_src python :var sum=MyTable[2:7,1] :exports none
   return sum
#+end_src

#+results:
| 0 | 1 | 4 | 9 | 16 | 25 |

#+begin_src python :var sum=MyTable[9,1] :exports none
   return sum
#+end_src

#+results:
: 55
--8<---------------cut here---------------end--------------->8---

>
> In addition, the hlines are being counted. Is this intended behaviour?

Unfortunately there is no clean way (at least that I am aware of) to
handle 'hlines *before* the table indexing code has a crack at parsing
the table.  I suppose we could simply strip out all hlines whenever a
table is being indexed, but I'm not sure if that's always desirable...

> I remember that there is a thread in the list about keeping the hlines
> in resulting tables, but even if that is desirable, counting the
> hlines as lines will result in troubles (python give me an error if I
> use sum=MyTable[9,1], for instance).
>

This is a more general problem.  As it happens Dan and I are currently
testing an update which will introduce some new header arguments to deal
with this issue exactly .  It's still a little too green to inflict on a
wider audience, but trust me when I say that relief is on the horizon.

>
>
> I was trying to plot the table with Org-Babel and Gnuplot with the code below
>
> #+begin_src gnuplot :var data=MyTable[1:-2] :var sum=MyTable[7,1]
> :results silent :exports none
>   reset
>   set label "Sum: %.0f",sum at graph 0.03, graph 0.93
>   plot data with linespoints
> #+end_src
>
> but the sum variable will have the value of a temporary file with the
> element [7,1] instead of the actual value. I could use ":var sum=55" but
> then I would have to change this whenever I change the table.
>

For a short email this is packed with probing questions. :)

This has to do with passing literal values to gnuplot (as opposed to
tables).  When gnuplot receives a vector it drops it to a table and
replaces the variable with the table (so gnuplot can pull the values
out), when it receives a scalar it just drops the scalar value directly
into the code.

The above indexing fix should also fix this problem.

Best -- Eric

>
>
> - Darlan
>
> ps: How do I do that "cute here start/end"? Is it gnus functionality (I use
> wanderlust) or it is more general?
>

The function is called `message-mark-inserted-region' and is part of
message.el which I believe is distributed with Emacs (can't be sure).

>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Please use `Reply All' to send replies to the list.
> address@hidden
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode




reply via email to

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