Matt, I am glad you got past your roadblock.
I am puzzled by your use of `dev.set'. I have never explicitly invoked that function. FWIW, I have used R for more than 20 years and routinely write packages or reports that create graphics. And I use ESS (and used its predecessor S-mode) as my principal IDE for that work. (Org relies on ESS for modes relating to R.) I routinely use Mac OS, but occasionally work with Linux and Windows. Invoking R from the terminal window (or equivalent on Windows) and typing interactive commands, I get: > dev.cur() null device 1 > plot(1:5) > dev.cur() quartz 2 > Note there is no call to dev.set(). The quartz device (the interactive default on Mac OS) is invoked implicitly by plot as described by the `Details' in the help page displayed by typing `?device' as the R prompt" "If no device is open, calling any high-level graphics function will cause a device to be opened." If I start emacs and open an org buffer with just this src block in it: #+begin_src R dev.cur() plot(1:5) dev.cur() #+end_src then place point in the src block and type the line in this example block #+begin_example C-c ' C-n RET C-n C-n #+end_example I end up with the same output as above in my *R* session buffer. A new graphics device is opened and the plot appears in it. Best, Chuck > On Apr 6, 2020, at 6:26 PM, Matt Price <mopto...@gmail.com> wrote: > > > > On Sun, Apr 5, 2020 at 1:19 PM Berry, Charles <ccbe...@health.ucsd.edu> wrote: > > > > On Apr 4, 2020, at 4:27 PM, Matt Price <mopto...@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