From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Eric Schulte" Subject: Re: [org-babel] Feature request: Get a scalar for "data=example-table[0, 1]" Date: Wed, 21 Apr 2010 09:43:54 -0600 Message-ID: <87aaswg69x.fsf@gmail.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O4c60-0001iW-8e for emacs-orgmode@gnu.org; Wed, 21 Apr 2010 11:44:12 -0400 Received: from [140.186.70.92] (port=60198 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O4c5y-0001gj-I7 for emacs-orgmode@gnu.org; Wed, 21 Apr 2010 11:44:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O4c5r-0003ez-8x for emacs-orgmode@gnu.org; Wed, 21 Apr 2010 11:44:10 -0400 Received: from mail-ew0-f214.google.com ([209.85.219.214]:47821) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O4c5p-0003eC-NR for emacs-orgmode@gnu.org; Wed, 21 Apr 2010 11:44:03 -0400 Received: by ewy6 with SMTP id 6so2566982ewy.32 for ; Wed, 21 Apr 2010 08:43:59 -0700 (PDT) In-Reply-To: (Darlan Cavalcante Moreira's message of "Wed, 21 Apr 2010 16:37:07 +0200") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Darlan Cavalcante Moreira Cc: emacs-orgmode@gnu.org Hi Darlan, Darlan Cavalcante Moreira 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(@2..@-1) > > 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(@2..@-1) #+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. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode