On Sun, 12 Jun 2016, Thomas S. Dye wrote:
Aloha Kaushal,
Kaushal Modi writes:
[deleted]
So what determines if the results should be table formatted or kept verbatim
(scalar)?
--
I think I'm correct to say that by default a single value result is
output as a scalar, and everything else is converted to an Org mode
table.
TL;DR: That is almost correct. `:post' header arg gives fine control of
formatting if needed.
`org-babel-insert-result' formats anything that isn't a string or a list
using "%S". Then it tries hard to turn a list into a "table". Lists that
cannot be made into tables are formatted as strings with "%s\n". However,
various languages have their own formatting principles, so what
`org-babel-insert-result' gets as the `result' is a bit idiosyncratic.
You can get a deeper look at the `result' by pretty printing it with the
aid of a :post header arg. Example:
#+NAME: I-feel-pretty
#+BEGIN_SRC emacs-lisp :results pp
*this*
#+END_SRC
This elisp list is not revised:
#+BEGIN_SRC emacs-lisp :post I-feel-pretty
'(a b c (d . e))
#+END_SRC
#+RESULTS:
: (a b c
: (d . e))
But R turns its list into an R data.frame and then into a elisp list with
an element for each row:
#+BEGIN_SRC R :post I-feel-pretty
list(a="a",b="b", c="c", d=c("d", "e"))
#+END_SRC
#+RESULTS:
: (("a" "b" "c" "d")
: ("a" "b" "c" "e"))
HTH,
Chuck