From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Charles C. Berry" Subject: Re: [babel] return file from R Date: Thu, 17 Dec 2015 09:00:23 -0800 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:36008) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a9buq-0003on-KK for emacs-orgmode@gnu.org; Thu, 17 Dec 2015 12:00:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a9bum-0002XT-Gb for emacs-orgmode@gnu.org; Thu, 17 Dec 2015 12:00:32 -0500 Received: from iport-bcv2-out.ucsd.edu ([132.239.0.73]:16699) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a9bum-0002Wm-8W for emacs-orgmode@gnu.org; Thu, 17 Dec 2015 12:00:28 -0500 In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Andreas Leha Cc: emacs-orgmode@gnu.org On Thu, 17 Dec 2015, Andreas Leha wrote: > Hi all, > > I think there is a bug in the handling of results of R src blocks. What > is the suggested way to make an R block return a link to a file? The > obvious way appends a newline character to the file link (which is > broken because of that). > > Here is an example: > --8<---------------cut here---------------start------------->8--- > #+NAME: TESTSRC > #+BEGIN_SRC R :results file > a <- file.path("junk", "test.org") > a > #+END_SRC > > #+RESULTS: TESTSRC > [[file:junk/test.org > ]] > > --8<---------------cut here---------------end--------------->8--- That *is* the suggested way, and it will work in (say) emacs-lisp. The problem for `:results value' (the default) is that a newline is added to the result by `org-babel-R-evaluate-external-process'. This *might* be the fix, but I do not have time to check it thoroughly: diff --git a/lisp/ob-R.el b/lisp/ob-R.el index f72cd95..f660bbd 100644 --- a/lisp/ob-R.el +++ b/lisp/ob-R.el @@ -397,7 +397,7 @@ last statement in BODY, as elisp." (org-babel-result-cond result-params (with-temp-buffer (insert-file-contents tmp-file) - (buffer-string)) + (org-babel-chomp (buffer-string) "\n")) (org-babel-import-elisp-from-file tmp-file '(16))) column-names-p))) (output (org-babel-eval org-babel-R-command body)))) In the meanwhile, you can work around by using `:results output' and wrapping the result in cat(). HTH, Chuck