emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] R and babel on Windows problem


From: John Hendy
Subject: Re: [O] R and babel on Windows problem
Date: Fri, 6 Jul 2012 17:08:56 -0500

On Fri, Jul 6, 2012 at 1:45 PM, Nick Dokos <address@hidden> wrote:
> John Hendy <address@hidden> wrote:
>
>> On Fri, Jul 6, 2012 at 12:12 PM, Nick Dokos <address@hidden> wrote:
>> > John Hendy <address@hidden> wrote:
>> >
>> >> Any updates on this? Could someone provide a minimal example I could
>> >> try? Or verify that my steps above are correct. I'm not sure why it's
>> >> not triggering the step by step function execution described.
>> >>
>> >
>> > I had sent out a note about C-u C-M-x and what you should see in the
>> > echo area after that, but I don't think I've seen a reply: did you try
>> > that and did it work as expected?
>> >
>> > Either gmane is or I am being stupid right now and cannot find the message
>> > (maybe it never made it, but gmane cannot seem to find the thread at all
>> > right now), so I append a copy of that message.
>>
>> Yes. I guess I didn't explicitly say, but I mentioned that I had
>> triggered something goofy by accident in my earlier hunt for edebug.
>> I'll walkthrough right now:
>> - Got to ob-R.el in emacs
>> - C-s to find org-babel-R-evaluate-external-process
>> - C-u C-M-x
>> - Minibuffer: "Edebug: org-babel-R-evaluate-external-process"
>> - Visit file test.org
>> - C-c C-c on the src block
>> - Well... of course it works now. Not sure what I was doing wrong before.
>>
>
> The reason that I sent out that note was that you mentioned pressing M-x
> C-M-x (rather than C-u C-M-x) and getting the name of the function
> echoed (without the "Edebug: " part), so I wanted to make sure that you
> were DTRT here. Could that be what you were doing wrong? or was that a
> typo on your part?

Whoops -- yes, this was me probably making a typo. Or maybe the first
time around I was messing it up which is why it wasn't working. It
ended up working in the end.

>
>> I pressed space continually until failure, then again to verify the
>> failing line. It's this one (line 313):
>>
>> ,---
>> | (output (org-babel-eval org-babel-R-command body))))
>> `---
>>
>
> Just fyi and to clarify some basic lisp: the form
>
>      (org-babel-eval org-babel-R-command body)
>
> says: evaluate the org-babel-eval function with arguments
> org-babel-R-command and body (actually, those variables are evaluated
> first and then the *values* are passed to the function). The evaluation
> returns a result (a string in this case) which is assigned to the local
> variable output for further processing (local, because this whole thing
> is part of a let-form which is not shown in your snippet).
>
> I.e. a function call in lisp always looks like this:
>
>      (<func> <arg1> <arg2> ....)
>
>> When I run this line:
>>
>> ,---
>> | (org-babel-eval org-babel-R-command
>> `---
>>
>> I get this in the minibuffer:
>>
>> ,---
>> | Result: "C:/Progra~1/R/R-2.15.0/bin/R"
>> `---
>>
>
> I presume you just typed "e" when the cursor was after the variable:
> that just evaluates the variable. If you press SPACE then the cursor
> would advance to after the ``body'' variable (on the closing paren) and
> an "e" would evaluate *that* variable.  After another SPACE, the cursor
> would be *after* the closing paren and an "e" would evaluate the function
> call and you would see the result, i.e. what would be assigned to
> ``output''.
>

Maybe I didn't get edebug right. I just kept pressing space with no 'e'...

>> Should I be able to run this from the Windows cmd prompt successfully?
>> I think this is my problem. Even using tab completion to ensure the
>> path is correct, I get the same error message "The system cannot find
>> the path specified" when I run this from cmd!
>>
>> I guess I honed in on my problem. I can run R from my Start Menu shortcut 
>> fine.
>>
>> Update: I'm on 64bit and just now realized there's another set of R
>> cmds in ../R-2.15.0/bin/x64/. This is what I needed.
>>
>> Now my problem is that using R along doesn't produce any output. With
>> the above modification, I get:
>>
>> ,---
>> | Fatal error: you must specify '--save', '--no-save' or '--vanilla'
>> `---
>>
>> I'm quite close! If I add --no-save, I get exported results but they
>> include all of the R preamble text from when it starts. Here's my
>> block for reference:
>>
>> #+begin_src R :results output org :exports results
>>
>> x <- c(1:10)
>> summary(x)
>>
>> #+end_src
>>
>
> OK, at this point I will "exit, stage left, chased by a bear", since
> both Windoze and R are within my areas of almost complete ignorance :-)
>

No worries and serious thanks for bearing with me. Eric got it with
the options to pass via the org-babel-R-command variable. Since the
default includes --slave and --no-save and I changed it, I needed to
add that to my custom setting of the variable.


Thanks again!
John

> Nick
>
>>
>>
>> Thanks,
>> John
>>
>>
>> >
>> > Nick
>> >
>> >
>> > John Hendy <address@hidden> wrote:
>> > ...
>> >> >
>> >> > Oh, sorry: edebug is described in
>> >> >
>> >> > (info "(elisp) Edebug")
>> >> >
>> >> > The basics: visit ob-R.el, go to the 
>> >> > org-babel-R-evaluate-external-process
>> >> > definition and press C-u C-M-x. Then do whatever you were doing to get 
>> >> > the
>> >> > problem. It should stop at the function and you can single-step by 
>> >> > pressing
>> >> > SPACE. At strategic points, you can evaluate things with "e".
>> >>
>> >> Eeks. Is the fact that I learned emacs only for org-mode showing. I
>> >> don't even know how to =(info "(elisp) Edebug")= -- do I put an =M-x=
>> >> in front of that? =M-x info= seems to bring me to a help page for
>> >> info!
>> >>
>> >
>> > You have to evaluate it somehow. If you are reading your mail in emacs,
>> > just place the cursor after the closing paren and press C-x C-e. If not,
>> > just go to emacs and "C-h i elisp RET i edebug RET" or equivalently,
>> > type ESC ESC : (info "(elisp) Edebug") RET. Underlying assumption: you
>> > have the Emacs Lisp info files installed.
>> >
>> >> Anyway... I just googled edebug and it says about the same as you did
>> >> (except for appending "eval-defun with a prefix argument" onto =C-u
>> >> C-M-x=.
>> >> - 
>> >> http://www.gnu.org/software/emacs/manual/html_node/elisp/Using-Edebug.html
>> >>
>> >> Anyway:
>> >> - Visited ob-R.el in emacs
>> >> - Found org-babel-R-evaluate-external-process
>> >> - Put the cursor on the line =(defun 
>> >> org-babel-R-evaluate-external-process=
>> >> - Did =M-x C-M-x= and the minibuffer echoed the name of the function
>> >
>> > C-u C-M-x please: and the echo area should say "Edebug:
>> > org-babel-R-evaluate-external-process" afterwards.
>> >
>> > Nick
>> >
>> >> - Visited my file, test.org and did =C-c C-c= on the R babel block
>> >> - Nothing different occurred; I just got "The system cannot find the
>> >> path specified"
>> >>
>> >> I tried the above again with regular 'ol org-babel-R-evaluate just in
>> >> case and had the same results.
>> >>
>> >> I'm clearly goofing something but have no idea what it is.
>> >>
>> >>
>> >> John
>> >>
>> >>
>> >> >
>> >> > If you mess it up (and you probably will a few times), no problem: just 
>> >> > try
>> >> > again. And be patient!
>> >> >
>> >> > Good luck,
>> >> > Nick
>> >> >
>> >> >
>> >> >
>> >> >>
>> >> >> John
>> >> >>
>> >> >>
>> >> >> >
>> >> >> > Nick
>> >> >> >
>> >> >> >> Using =M-x R= works find. ESS is finding R. I successfully loaded a
>> >> >> >> .csv, ggplot2 and plotted.
>> >> >> >>
>> >> >> >>
>> >> >> >> John
>> >> >> >>
>> >> >> >> John
>> >> >> >>
>> >> >> >> >
>> >> >> >> > Nick
>> >> >> >> >
>> >> >> >>
>> >> >>
>> >>
>> >
>> >
>>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]