On Sun, Apr 5, 2020 at 1:19 PM Berry, Charles <ccberry@health.ucsd.edu> wrote:


> On Apr 4, 2020, at 4:27 PM, Matt Price <moptop99@gmail.com> wrote:
>
> Does anyone know much about the difference between an R session opened by typing M-x R, and the R session opened by org-babel?


Short answer: almost none.

Long answer: what `org-babel-R-initite-session' and friends do.
:-) thanks, I should have been looking for that

>
> I'm just learning R and my usual method for learning a language is to keep a kind of notebook in org with code snippets they I can execute and iterate on rapidly as I learn. This works great in R when I'm just doing math.  When I am working on plots, it would be nice to have them open up quickly either in emacs or in the standard x11 window that R session opened switch M-x R opens up. 
>
> I know I can set the src block headers to produ e a file, but when I'm just iterating rapidly I often switch back and forth between a data output and a graphical output, and typing/erasing those headers is clunky and slow. It would be easier to just paste the plot command into the console and have it pop open the window... But that doesn't seem to work. Anyone know if I can tweak something to make that possible?
>


I sam really puzzled by this. Do you have an ECM that illustrates this?

Working interactively on my Mac (Quartz - X11 is the device), I routinely do what you describe - usually working from the src edit buffer - and the plots are displayed (and older plots are available via clover-left or some such).

If I had to guess, I'd say that you are opening an R session, but not using it. If you execute a src block, but it does not have a `:session' header, a new instance of R will create a plot file and then exit. If you look in the default directory, you would see `Rplots.pdf' or some such.

The only other thing that comes to mind is that you opened a device that is holding on to all your plots. Try `dev.cur()' in R immediately before and after you create a plot and see what the result is.

This was the problem. I don't see that I'm calling dev.set() anywhere but when the session initiates dev.cur() returns

null
     1

calling dev.set(1) or dev.set(2) launches an R_x11 window and future plots are displayed there.  As I say, I'm just learning R, and I don't really understand how the device is set up. I also don't understand why it would be set to X11 in a plain-old R session, but not in an org-babel R session. Most references to "device" in ~ob-R.el~ seem to be managing file outputs, and "X11". For now I don't think I'll explore  a proper solution as I'm already pretty far down a rabit hole just learning R at all!  But thanks very much for this workaround.

Matt
HTH,

Chuck