On 11/10/2018 7:18 AM, Ista Zahn wrote:
Hi Spencer,

On Thu, Oct 11, 2018 at 5:08 AM Spencer Graves
<spencer.gra...@effectivedefense.org> wrote:

Hello:


        What are the differences between Jupyter notebooks and RMarkdown
vignettes?

Here are some of the main differences I'm aware of:

Rmarkdown files include code and prose. The results produced by the
code do not appear in the Rmarkdown file; instead, the file must be
processed and typeset to produce a .pdf or .html (etc.) file that
includes those results. Jupyter notebooks dispense with with
processing step: output is displayed directly in the notebook. That
is, a notebook includes code, prose, and results, while an Rmarkdown
file includes only code and prose.

RStudio can display the output mixed in with the text in the editor.


Rmarkdown allows control over the inclusion of code and results, and
over how the results are displayed via header arguments. There is no
such thing in Jupyter notebooks. Controlling the precise appearance of
a document produced by Jupyter is much more difficult. Going farther,
one can even say that Jupyter notebooks are designed primarily to be
read as Jupyter notebooks; exporting to other formats is kind of an
afterthought. In contrast, Rmarkdown is designed to produce the final
readable result in another format (.html or .pdf typically).

Rmarkdown is based on markdown, a human readable markup language,
Jupyter notebooks are based on JSON, a data interchange format common
on the web. This means that Rmarkdown files can be easily edited using
any text editor you like. The same is not true of Jupyter notebooks.
While you can of course edit the JSON directly, the format is designed
to be written and read by a computer; editing it yourself is not easy.

Rmarkdown is specific to R (I guess there is some basic support in
knitr for other languages, but in my experience it never worked well)
while Jupyter notebooks are language agnostic and "kernels" exist for
a large number of programming languages. However, each Jupyter
notebook can use only one kernel; you can't easily have R and Python
code in the same notebook.

Jupyter notebooks typically run in your browser where the actual text
editing features are somewhat limited. Rmarkdown is typically run in
an editor such as Emacs or Rstudio where editing and project support
is much better and greater customization may be possible. You can work
indirectly with Jupyter notebooks in Emacs
(https://github.com/millejoh/emacs-ipython-notebook) and perhaps other
editors as well; this goes some way toward escaping the tyranny of the
browser but is more fragile and difficult to get working compared to
Rmarkdown.

Because Jupyter uses a web-based client-server model, it is easy to
provide live interactive notebooks on your website (see e.g.,
https://github.com/jupyterhub/binderhub). As far as I know this is not
currently possible with Rmarkdown.

There are ways to put Shiny apps into Rmarkdown documents; see <https://beta.rstudioconnect.com/content/2671/Combining-Shiny-R-Markdown.html>. Other than my two notes above, your comments about Rmarkdown seem right on the mark.

Duncan Murdoch




        I'm trying to do real time monitoring of the broadcast quality of
a radio station, and it seems to me that it may be easier to do that in
Python than in R.[1]  This led me to a recent post to
"python-l...@python.org" that mentioned "Jupyter, Mathematica, and the
Future of the Research Paper"[2] by Paul Romer, who won the 2018 Nobel
Memorial Prize in Economics only a few days ago.  In brief, this article
suggests that Jupyter notebooks may replace publication in refereed
scientific journals as the primary vehicle for sharing scientific
research, because they make it so easy for readers to follow both the
scientific and computational logic and test their own modifications.


        A "Jupyter Notebook Tutorial: The Definitive Guide"[3] suggested
I first install Anaconda Navigator.  I got version 1.9.2 of that.  It
opens with options for eight different "applications" including
JupyterLab 0.34.9, Jupyter Notebook 5.6.0, Spyder 3.3.1 (an IDE for
Python), and RStudio 1.1.456.


        This leads to several questions:


              1.  In general, what experiences have people had with
Jupyter Notebooks, Anaconda Navigator, and RMarkdown vignettes in
RStudio, and the similarities and differences?  Do you know any
references that discuss this?

I've used both extensively, and noted the differences I've discovered above.



              2.  More specifically, does it make sense to try to use
RStudio from within Anaconda Navigator, or is one better off using
RStudio as a separate, stand alone application -- or should one even
abandon RStudio and run R instead from within a Jupyter Notebook? [I'm
new to this topic, so it's possible that this question doesn't even make
sense.]

The only advantage I can think of to using Rstudio via Anaconda is
that you could use conda environments to maintain different versions
or R and/or R packages for different projects.

You'll have to weigh the pros and cons to decide whether to switch
from Rstudio to Jupyter notebooks. Depending on what you want to do
there are both advantages and disadvantages, as discussed above.

Finally, I have to give a plug for a couple of related tools that I
find very useful.

Emacs org-mode https://orgmode.org/ gives you the best of both worlds:
notebooks unconstrained by the browser that can include code in
multiple languages, header arguments, excellent export support, etc.
It is superior to both Jupyter and Rmarkdown, except that support only
exists in Emacs.

Jupytext (https://github.com/mwouts/jupytext) is another way to have
it all, by allowing you to edit in markdown or Rmarkdown, and
auto-generating a notebook and possibly other formats for you. I've
only recently started experimenting with it, but so far I like it a
lot.

Best,
Ista


        Thanks,
        Spencer Graves


[1] If you have ideas for how best to do real time monitoring of
broadcast quality of a radio station, I'd love to hear them.  I need
software that will do that, preferably something that's free, open
source.  The commercial software I've seen for this is not adequate for
my purposes, so I'm trying to write my own.  I have a sample script in
Python that will read a live stream from a radio tuner and output a
*.wav of whatever length I want, and I wrote Python eight years ago for
a similar real time application.  I'd prefer to use R, but I don't know
how to get started.


[2] 2018-04-13:
"https://paulromer.net/jupyter-mathematica-and-the-future-of-the-research-paper";.
This further cites a similar article in The Atlantic from 2018-04-05:
"www.theatlantic.com/science/archive/2018/04/the-scientific-paper-is-obsolete/556676".

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to