From: Nick Dokos <ndokos@gmail.com>
To: emacs-orgmode@gnu.org
Subject: Re: cannot execute org-mode code from the front page tutorial.
Date: Fri, 15 Aug 2014 14:40:38 -0400 [thread overview]
Message-ID: <87wqa9zjdl.fsf@alphaville.bos.redhat.com> (raw)
In-Reply-To: m27g294rcd.fsf@tsdye.com
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
next prev parent reply other threads:[~2014-08-15 18:41 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-15 16:37 cannot execute org-mode code from the front page tutorial jenia.ivlev
2014-08-15 17:04 ` Thomas S. Dye
2014-08-15 18:40 ` Nick Dokos [this message]
2014-08-15 23:36 ` jenia.ivlev
2014-08-16 2:41 ` Nick Dokos
2014-08-16 2:43 ` Nick Dokos
2014-08-16 16:49 ` Charles Berry
2014-08-16 17:13 ` Thomas S. Dye
2014-08-16 21:01 ` Nick Dokos
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:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wqa9zjdl.fsf@alphaville.bos.redhat.com \
--to=ndokos@gmail.com \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).