Org-mode mailing list
 help / color / mirror / Atom feed
From: Jeremie Juste <>
To: Damien Cassou <>,
Cc: "Berry, Charles" <>
Subject: Re: Bug: Babel+R handles spaces wrongly in tables [9.3.6 (release_9.3.6 @ /home/cassou/.emacs.d/lib/org/lisp/)]
Date: Sat, 19 Dec 2020 14:45:46 +0100
Message-ID: <> (raw)
In-Reply-To: <>


Apologies for the late reply and thanks for pointing out this bug.
|| On Sunday,  6 Sep 2020 at 13:32, Damien Cassou wrote:

#+name: table
|     | 2014 |
| A C |    1 |
| C   |    2 |

#+name: linechart
#+begin_src R :results value :var accounts="" :exports none

#+call: linechart(accounts=table[,0])

: 3

Currently there are no support for vectors. So it is either a
data.frame or an object of length 1. 

|| On Sun, 06 Sep 2020 18:23:19  Berry, Charles" wrote
> Actually the length should be 1, i.e. a data.frame with a single column of two elements.

Indeed with the current handling the length should be 1 but it is
not. Even with the previous case solved, it might still be an
unexpected behavior for a typical R user who would expect a vector. Do you
think it is reasonable?

The following patch will at least harmonize the results towards the

diff --git a/lisp/ob-R.el b/lisp/ob-R.el
index 420b8ccbc..81693d157 100644
--- a/lisp/ob-R.el
+++ b/lisp/ob-R.el
@@ -236,11 +236,11 @@ This function is called by `org-babel-execute-src-block'."
 (defun org-babel-R-assign-elisp (name value colnames-p rownames-p)
   "Construct R code assigning the elisp VALUE to a variable named NAME."
   (if (listp value)
-      (let* ((value (if (listp (car value)) value (list value)))
-            (lengths (mapcar 'length (cl-remove-if-not 'sequencep value)))
+      (let* ((lengths (mapcar 'length (cl-remove-if-not 'sequencep value)))
             (max (if lengths (apply 'max lengths) 0))
             (min (if lengths (apply 'min lengths) 0)))
         ;; Ensure VALUE has an orgtbl structure (depth of at least 2).
+        (unless (listp (car value)) (setq value (list value)))
        (let ((file (orgtbl-to-tsv value '(:fmt org-babel-R-quote-tsv-field)))
              (header (if (or (eq (nth 1 value) 'hline) colnames-p)
                          "TRUE" "FALSE"))

so the following will return a data.frame

#+begin_src R :results output :var accounts=(identity '("A B" "C")) 

:    V1 V2
: 1 A B  C

I will add support for selection of 1 single column as a
vector soon.

Best regards,

PS: I am a newbie maintainer so feel free to comment if there you find
room for improvements ;-)

  parent reply	other threads:[~2020-12-19 13:46 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-06 11:32 Damien Cassou
2020-09-06 18:23 ` Berry, Charles via General discussions about Org-mode.
2020-09-07  4:40   ` Bastien
2020-09-07  4:44     ` Bastien
2020-12-19 13:45 ` Jeremie Juste [this message]
2021-05-02  3:52   ` Bastien
2021-05-02 22:45     ` Jeremie Juste

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:

  List information:

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

  git send-email \ \ \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Org-mode mailing list

This inbox may be cloned and mirrored by anyone:

	git clone --mirror list/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 list list/ \
	public-inbox-index list

Example config snippet for mirrors.
Newsgroups are available over NNTP:

AGPL code for this site: git clone