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
next prev parent 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
* 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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.