From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nick Dokos Subject: Re: cannot execute org-mode code from the front page tutorial. Date: Fri, 15 Aug 2014 14:40:38 -0400 Message-ID: <87wqa9zjdl.fsf@alphaville.bos.redhat.com> References: <8738cxvhe0.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:39627) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XIMQq-0000FH-2p for emacs-orgmode@gnu.org; Fri, 15 Aug 2014 14:41:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XIMQk-0005vb-Vy for emacs-orgmode@gnu.org; Fri, 15 Aug 2014 14:40:56 -0400 Received: from plane.gmane.org ([80.91.229.3]:36192) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XIMQk-0005vX-Lw for emacs-orgmode@gnu.org; Fri, 15 Aug 2014 14:40:50 -0400 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1XIMQj-0002O9-Do for emacs-orgmode@gnu.org; Fri, 15 Aug 2014 20:40:49 +0200 Received: from nat-pool-bos-t.redhat.com ([66.187.233.206]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 15 Aug 2014 20:40:49 +0200 Received: from ndokos by nat-pool-bos-t.redhat.com with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 15 Aug 2014 20:40:49 +0200 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: emacs-orgmode@gnu.org tsd@tsdye.com (Thomas S. Dye) writes: > Aloha Jenia, > > jenia.ivlev@gmail.com (jenia.ivlev) writes: > >> Hello. >> >> I'm trying to go through the org-mode tutorial on its official page. >> >> However, I have trouble execute the code there" >> >> >> #+NAME: tbl-example-data() >> #+BEGIN_SRC R :results value >> runif(n=5, min=0, max=1) >> #+END_SRC >> >> #+RESULTS: tbl-example-data >> | 0.565871287835762 | >> | 0.457158328965306 | >> | 0.0498181856237352 | >> | 0.988381117349491 | >> | 0.898329895688221 | >> >> >> >> #+NAME: R-mean(x) >> #+BEGIN_SRC R :var x=tbl-example-data >> mean(x) >> #+END_SRC >> >> >> >> >> #+call: R-mean(x=tbl-example-data) >> >> >> It returns me: >> >> >> >> Reference 'R-mean' not found in this buffer. >> > > FWIW, this code doesn't work for me, either, using a recent Org-mode from > git. > > > For others able to help, the "org-mode tutorial on its official page" > that Jenia refers to is > http://orgmode.org/worg/org-contrib/babel/intro.html#spreadsheet > I simplified the org file that leads to the error: --8<---------------cut here---------------start------------->8--- #+name: tbl-example-data | foo | |-------------------| | 0.996612656628713 | | 0.148018079344183 | | 0.560482589527965 | | 0.329234286677092 | | 0.99839389254339 | #+BEGIN_SRC R :var x=tbl-example-data mean(x) #+END_SRC #+RESULTS: : nil --8<---------------cut here---------------end--------------->8--- Running it in the debugger, I think what it does is the equivalent of --8<---------------cut here---------------start------------->8--- x <- local({con <- textConnection("0.996612656628713 0.148018079344183 0.560482589527965 0.329234286677092 0.99839389254339") res <- read.table( con, header = FALSE, row.names = NULL, sep = "\t", as.is = TRUE ) close(con) res}) mean(x) --8<---------------cut here---------------end--------------->8--- and trying this on the command line, I get an error: ,---- | > x <- local({con <- textConnection("0.996612656628713 | 0.148018079344183 | 0.560482589527965 | 0.329234286677092 | 0.99839389254339") | res <- read.table( | con, | header = FALSE, | row.names = NULL, | sep = "\t", | as.is = TRUE | ) | close(con) | res}) | | + + + + + + + + + + + + + > > x | V1 | 1 0.9966127 | 2 0.1480181 | 3 0.5604826 | 4 0.3292343 | 5 0.9983939 | > mean(x) | [1] NA | Warning message: | In mean.default(x) : argument is not numeric or logical: returning NA `---- [Disclaimer: from this point on, I'm mostly talking about R - I know nothing about R] Fumbling around with typeof(x) and help(list), I stumbled upon unlist() and used it in the evaluation of x: ,---- | > x <- local({con <- textConnection("0.996612656628713 | 0.148018079344183 | 0.560482589527965 | 0.329234286677092 | 0.99839389254339") | res <- read.table( | con, | header = FALSE, | row.names = NULL, | sep = "\t", | as.is = TRUE | ) | close(con) | unlist(res)}) | + + + + + + + + + + + + + > x | V11 V12 V13 V14 V15 | 0.9966127 0.1480181 0.5604826 0.3292343 0.9983939 | > mean(x) | [1] 0.6065483 | > `---- Seems to work. Based on this purely empirical observation, I applied this patch to org: --8<---------------cut here---------------start------------->8--- diff --git a/lisp/ob-R.el b/lisp/ob-R.el index 9f4eb4b..f3338cb 100644 --- a/lisp/ob-R.el +++ b/lisp/ob-R.el @@ -106,7 +106,7 @@ this variable.") as.is = TRUE ) close(con) - res + unlist(res) })" "R code used to transfer a table defined as a variable from org to R. This function is used when the table contains a header.") @@ -126,7 +126,7 @@ This function is used when the table contains a header.") col.names = paste(\"V\", seq_len(%d), sep =\"\") ) close(con) - res + unlist(res) })" "R code used to transfer a table defined as a variable from org to R. This function is used when the table does not contain a header.") --8<---------------cut here---------------end--------------->8--- and the org file at the top works. But this clearly needs to be vetted by an R expert. The original example needs some changes to work, mainly simplification of the #+names: --8<---------------cut here---------------start------------->8--- #+NAME: tbl-example-data #+BEGIN_SRC R :results value runif(n=5, min=0, max=1) #+END_SRC #+NAME: R-mean #+BEGIN_SRC R :var x=tbl-example-data mean(x) #+END_SRC #+call: R-mean(x=tbl-example-data) --8<---------------cut here---------------end--------------->8--- And assuming this is correct, the worg page will need to be corrected too. -- Nick