emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Eric Schulte" <schulte.eric@gmail.com>
To: Austin Frank <austin.frank@gmail.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: [babel]  apply #+TABLEFM lines during export?
Date: Sun, 11 Jul 2010 15:26:30 -0700	[thread overview]
Message-ID: <87hbk5mh9j.fsf@gmail.com> (raw)
In-Reply-To: m0bpafpgpx.fsf@gmail.com

Hi Austin,

Austin Frank <austin.frank@gmail.com> writes:

> Hi all--
>
> I have a (hopefully quick question) about formatting tabular output from
> ob-R.  Consider the following block:
>
> #+source:  anova-example
> #+BEGIN_SRC R :cache yes :exports results :colnames yes :results value
> library(ez)
> library(lme4)
>
> eza <- ezANOVA(dv = .(Reaction),
>                sid = .(Subject),
>                within = .(Days),
>                data = sleepstudy)
>
> print(eza$ANOVA)
> #+END_SRC
>
> This produces the following output:
> #+results[7e7015e41d95ed8986fb9a211a8b5c6e121ae99d]: anova-example
> | Effect | DFn | DFd |             SSn |              SSd |                F |                    p | p<.05 |              pes |
> |--------+-----+-----+-----------------+------------------+------------------+----------------------+-------+------------------|
> | Days   |   9 | 153 | 166235.12250176 | 151101.038615303 | 18.7026979326383 | 8.99534541600196e-21 | *     | 0.52384550792003 |
>
> That's more precision than I want in export, so I add a formula line to
> the results, hoping to change the formatting of the floats.  After
> hitting C-u C-u C-c C-c in the table, I get the following:
>
> #+results[7e7015e41d95ed8986fb9a211a8b5c6e121ae99d]: anova-example
> | Effect | DFn | DFd |         SSn |         SSd |       F |      p | p<.05 |    pes |
> |--------+-----+-----+-------------+-------------+---------+--------+-------+--------|
> | Days   |   9 | 153 | 166235.1200 | 151101.0400 | 18.7027 | 0.0000 | *     | 0.5238 |
> #+TBLFM: $4=$4;%.4f::$5=$5;%.4f::$6=$6;%.4f::$7=$7;%.4f::$9=$9;%.4f
>
> That's much better!  But, if I export this section to LaTeX, the formula
> line is not applied and I end up with the full precision in my table.
>
> \begin{center}
> \begin{tabular}{lrrrrrrlr}
>  Effect  &  DFn  &  DFd  &              SSn  &               SSd  &                 F  &                     p  &  p<.05  &               pes  \\
> \hline
>  Days    &    9  &  153  &  166235.12250176  &  151101.038615303  &  18.7026979326383  &  8.99534541600196e-21  &  *      &  0.52384550792003  \\
> \end{tabular}
> \end{center}
>
> Is there a way to make sure that the table formula is applied to the
> results block during export?  Alternatively, is there another way to
> reduce the precision of the numbers produced during export?
>

Under the current setup, I don't know of a way to ensure that the
formula will be re-run.  This may be a good place for future
(post-feature-freeze) functionality.  There has also been discussion of
adding a header argument for "post-processing" code blocks which could
accept the output of the evaluated code block as input -- this might be
related.

As a work-around, I would suggest the following emacs-lisp code block.
Export of this code block will trigger the evaluation of the R code
block, and it will then trim the output of said block resulting in the
desired table precision.

--8<---------------cut here---------------start------------->8---
#+begin_src emacs-lisp :var tab=anova-example :colnames yes :cache yes
  (mapcar
   (lambda (row)
     (mapcar
      (lambda (cell) (if (numberp cell) (format "%.4f" cell) cell))
      row))
   tab)
#+end_src

#+results[16ac354f1e7a65594bb59e252ab221e6a4b10f80]:
| Effect |    DFn |      DFd |         SSn |         SSd |       F |                    p | p<.05 |    pes |
|--------+--------+----------+-------------+-------------+---------+----------------------+-------+--------|
| Days   | 9.0000 | 153.0000 | 166235.1225 | 151101.0386 | 18.7027 | 8.99534541600196e-21 | *     | 0.5238 |
--8<---------------cut here---------------end--------------->8---

Cheers -- Eric

>
> Thanks for any help!
> /au

  reply	other threads:[~2010-07-12  4:54 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-10 14:13 [babel] apply #+TABLEFM lines during export? Austin Frank
2010-07-11 22:26 ` Eric Schulte [this message]
2010-07-13  3:59   ` Austin Frank
2010-07-13  5:06     ` Eric Schulte
2010-07-13 22:56       ` Austin Frank

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87hbk5mh9j.fsf@gmail.com \
    --to=schulte.eric@gmail.com \
    --cc=austin.frank@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).