* cannot execute org-mode code from the front page tutorial.
@ 2014-08-15 16:37 jenia.ivlev
2014-08-15 17:04 ` Thomas S. Dye
0 siblings, 1 reply; 9+ messages in thread
From: jenia.ivlev @ 2014-08-15 16:37 UTC (permalink / raw)
To: emacs-orgmode
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.
Can someone please tell me how can I fix this error?
Thanks in advance for your time and kind help.
Jenia.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: cannot execute org-mode code from the front page tutorial.
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
0 siblings, 1 reply; 9+ messages in thread
From: Thomas S. Dye @ 2014-08-15 17:04 UTC (permalink / raw)
To: jenia.ivlev; +Cc: emacs-orgmode
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
hth,
Tom
--
Thomas S. Dye
http://www.tsdye.com
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: cannot execute org-mode code from the front page tutorial.
2014-08-15 17:04 ` Thomas S. Dye
@ 2014-08-15 18:40 ` Nick Dokos
2014-08-15 23:36 ` jenia.ivlev
2014-08-16 16:49 ` Charles Berry
0 siblings, 2 replies; 9+ messages in thread
From: Nick Dokos @ 2014-08-15 18:40 UTC (permalink / raw)
To: emacs-orgmode
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
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: cannot execute org-mode code from the front page tutorial.
2014-08-15 18:40 ` Nick Dokos
@ 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
1 sibling, 2 replies; 9+ messages in thread
From: jenia.ivlev @ 2014-08-15 23:36 UTC (permalink / raw)
To: emacs-orgmode
I can't make the changes - apply the your path - because my ob-R.el file
is completly different, its a elisp file and doesnt contain any R code.
The file is located at /usr/share/emacs/24.3/lisp/org/ob-R.el
Can you tell me how do I proceed to apply our changes to my emacs?
Thanks again for your help.
Jenia.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: cannot execute org-mode code from the front page tutorial.
2014-08-15 23:36 ` jenia.ivlev
@ 2014-08-16 2:41 ` Nick Dokos
2014-08-16 2:43 ` Nick Dokos
1 sibling, 0 replies; 9+ messages in thread
From: Nick Dokos @ 2014-08-16 2:41 UTC (permalink / raw)
To: emacs-orgmode; +Cc: Rainer M. Krug
jenia.ivlev@gmail.com (jenia.ivlev) writes:
> I can't make the changes - apply the your path - because my ob-R.el file
> is completly different, its a elisp file and doesnt contain any R code.
>
> The file is located at /usr/share/emacs/24.3/lisp/org/ob-R.el
>
> Can you tell me how do I proceed to apply our changes to my emacs?
>
> Thanks again for your help.
>
Sorry, I tested latest org (and wrongly assumed that that's what you are
using). Can you post the results of
M-x org-version
here? I'll try to take a look at what goes wrong in that version.
For the record, the patch modifies the initialization of two
lisp constants that ob-R.el defines in its latest incarnation. This
change was introduced by Rainer Krug on June 23 with commit
4c415f38a5c71b45409faf9b59030ee7cee6abad. Before that, the values were
transmitted through temporary files. I hope Rainer (cc'ed) takes a look
at this thread: he is clearly the R expert here.
--
Nick
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: cannot execute org-mode code from the front page tutorial.
2014-08-15 23:36 ` jenia.ivlev
2014-08-16 2:41 ` Nick Dokos
@ 2014-08-16 2:43 ` Nick Dokos
1 sibling, 0 replies; 9+ messages in thread
From: Nick Dokos @ 2014-08-16 2:43 UTC (permalink / raw)
To: emacs-orgmode
jenia.ivlev@gmail.com (jenia.ivlev) writes:
> I can't make the changes - apply the your path - because my ob-R.el file
> is completly different, its a elisp file and doesnt contain any R code.
>
> The file is located at /usr/share/emacs/24.3/lisp/org/ob-R.el
>
> Can you tell me how do I proceed to apply our changes to my emacs?
>
> Thanks again for your help.
>
> Jenia.
>
>
>
Sorry, I tested latest org (and wrongly assumed that that's what you are
using). Can you post the results of
M-x org-version
here? I'll try to take a look at what goes wrong in that version.
For the record, the patch modifies the initialization of two lisp
constants that ob-R.el defines in its latest incarnation. This change
was introduced by Rainer Krug on June 23 with commit
4c415f38a5c71b45409faf9b59030ee7cee6abad. Before that, the values were
transmitted through temporary files. I hope Rainer takes a look at this
thread: he is clearly the R expert here.
--
Nick
--
Nick
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: cannot execute org-mode code from the front page tutorial.
2014-08-15 18:40 ` Nick Dokos
2014-08-15 23:36 ` jenia.ivlev
@ 2014-08-16 16:49 ` Charles Berry
2014-08-16 17:13 ` Thomas S. Dye
2014-08-16 21:01 ` Nick Dokos
1 sibling, 2 replies; 9+ messages in thread
From: Charles Berry @ 2014-08-16 16:49 UTC (permalink / raw)
To: emacs-orgmode
Nick Dokos <ndokos <at> gmail.com> writes:
>
> tsd <at> tsdye.com (Thomas S. Dye) writes:
>
> > Aloha Jenia,
> >
> > jenia.ivlev <at> gmail.com (jenia.ivlev) writes:
> >
> >> Hello.
> >>
> >> I'm trying to go through the org-mode tutorial on its official page.
> >>
[discussion showing that (if (listp value)...) generates a data.frame
deleted]
[delete patch turning a data.frame into a vector]
> And assuming this is correct, the worg page will need to be corrected
> too.
>
No patch is needed.
The point of the code in org-babel-R-assign-elisp is to create a data.frame
when `value' is a list.
The patch adding `unlist(res)' turns it into an ordinary vector.
This will break almost all uses of :var in R scr blocks.
I don't think this example could have worked for a long while - turning
elisp lists into R data.frames has been a feature for a good while.
Also, note the use of `sbe' vs `org-sbe' in the formula.
#+TBLFM: @2$1='(sbe "R-mean" (x "tbl-example-data()"))
Use `colMeans(x)' to fix the worg page.
HTH,
Chuck
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: cannot execute org-mode code from the front page tutorial.
2014-08-16 16:49 ` Charles Berry
@ 2014-08-16 17:13 ` Thomas S. Dye
2014-08-16 21:01 ` Nick Dokos
1 sibling, 0 replies; 9+ messages in thread
From: Thomas S. Dye @ 2014-08-16 17:13 UTC (permalink / raw)
To: Charles Berry; +Cc: emacs-orgmode
Charles Berry <ccberry@ucsd.edu> writes:
> Nick Dokos <ndokos <at> gmail.com> writes:
>
>>
>> tsd <at> tsdye.com (Thomas S. Dye) writes:
>>
>> > Aloha Jenia,
>> >
>> > jenia.ivlev <at> gmail.com (jenia.ivlev) writes:
>> >
>> >> Hello.
>> >>
>> >> I'm trying to go through the org-mode tutorial on its official page.
>> >>
>
> [discussion showing that (if (listp value)...) generates a data.frame
> deleted]
>
> [delete patch turning a data.frame into a vector]
>
>> And assuming this is correct, the worg page will need to be corrected
>> too.
>>
>
> No patch is needed.
>
> The point of the code in org-babel-R-assign-elisp is to create a data.frame
> when `value' is a list.
>
> The patch adding `unlist(res)' turns it into an ordinary vector.
>
> This will break almost all uses of :var in R scr blocks.
>
> I don't think this example could have worked for a long while - turning
> elisp lists into R data.frames has been a feature for a good while.
> Also, note the use of `sbe' vs `org-sbe' in the formula.
>
> #+TBLFM: @2$1='(sbe "R-mean" (x "tbl-example-data()"))
>
>
> Use `colMeans(x)' to fix the worg page.
Also, it appears that babel no longer supports passing variables through
the #+name: line. I don't use this syntax and can't remember now
whether support for it was removed, or if it just withered away.
At any rate, if I use the #+header: syntax then I can get the example
working partially. It is possible then to get the OP's desired result
with the #+call: line. Changing (sbe ...) to (org-sbe ...) in the table
calculates the mean, but doesn't yield a real table. The initial "|" on
the last line is missing.
#+NAME: tbl-example-data
#+BEGIN_SRC R :results value
runif(n=5, min=0, max=1)
#+END_SRC
#+RESULTS: tbl-example-data
| 0.850588989211246 |
| 0.138243367196992 |
| 0.382761054905131 |
| 0.00688096368685365 |
| 0.394350948277861 |
#+NAME: R-mean
#+header: :var x=""
#+header: :results output
#+BEGIN_SRC R
colMeans(x)
#+END_SRC
#+call: R-mean(x=tbl-example-data)
#+results:
: V1
: 0.4273072
#+tblname: summaries
| mean |
|------|
| V1 |
0.2574993|
#+TBLFM: @2$1='(org-sbe "R-mean" (x "tbl-example-data()"))
hth,
Tom
--
Thomas S. Dye
http://www.tsdye.com
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: cannot execute org-mode code from the front page tutorial.
2014-08-16 16:49 ` Charles Berry
2014-08-16 17:13 ` Thomas S. Dye
@ 2014-08-16 21:01 ` Nick Dokos
1 sibling, 0 replies; 9+ messages in thread
From: Nick Dokos @ 2014-08-16 21:01 UTC (permalink / raw)
To: emacs-orgmode
Charles Berry <ccberry@ucsd.edu> writes:
> Nick Dokos <ndokos <at> gmail.com> writes:
>
>>
>> tsd <at> tsdye.com (Thomas S. Dye) writes:
>>
>> > Aloha Jenia,
>> >
>> > jenia.ivlev <at> gmail.com (jenia.ivlev) writes:
>> >
>> >> Hello.
>> >>
>> >> I'm trying to go through the org-mode tutorial on its official page.
>> >>
>
> [discussion showing that (if (listp value)...) generates a data.frame
> deleted]
>
Ah, that's what's happening!
> [delete patch turning a data.frame into a vector]
>
>> And assuming this is correct, the worg page will need to be corrected
>> too.
>>
>
> No patch is needed.
>
> The point of the code in org-babel-R-assign-elisp is to create a data.frame
> when `value' is a list.
>
> The patch adding `unlist(res)' turns it into an ordinary vector.
>
> This will break almost all uses of :var in R scr blocks.
>
> I don't think this example could have worked for a long while - turning
> elisp lists into R data.frames has been a feature for a good while.
> Also, note the use of `sbe' vs `org-sbe' in the formula.
>
> #+TBLFM: @2$1='(sbe "R-mean" (x "tbl-example-data()"))
>
> Use `colMeans(x)' to fix the worg page.
>
Thanks! As penance, I'll try to fix the worg page (unless somebody beats
me to it of cource).
--
Nick
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2014-08-16 21:02 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
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
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).