t...@tsdye.com (Thomas S. Dye) writes: > Aloha Jenia, > > jenia.iv...@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