[R] RMarkdown vignettes v. Jupyter notebooks?

Jeff Newmiller
Thu, 11 Oct 2018 14:03:10 -0000

Ista, you do not seem to be aware of the
.nb.html format, which is way easier to share with a non-uswr than an ipynb file
yet allows the same in-progress kinds of results to be shared and the source can
be extracted easily using a web browser (no server needed).

There is some controversy about this whole notebook approach [1] but I think
deciding whether it is right for your purposes is highly subjective.

FWIW It took me years to figure out how to even open a Jupyter notebook, so the
idea that they should be the gold standard for sharing results seems absurd to
me.

[1] https://yihui.name/en/2018/09/notebook-war/

On October 11, 2018 5:53:29 AM PDT, Ista Zahn <istazahn at gmail.com>
wrote:
>On Thu, Oct 11, 2018 at 8:36 AM Duncan Murdoch
><murdoch.duncan at gmail.com> wrote:
>>
>> On 11/10/2018 7:18 AM, Ista Zahn wrote:
>> > Hi Spencer,
>> >
>> > On Thu, Oct 11, 2018 at 5:08 AM Spencer Graves
>> > <spencer.graves at 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.
>
>True, but the _file_ does not include the output. Thus it functions
>more as a preview, and will not be visible to you if I email you a
>.Rmd file. On the other hand, .ipynb files really do contain the
>output; if I email one to you and you open it in Jupyter you will see
>the output as well.
>
>--Ista
>
>>
>> >
>> > 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-list at 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 at 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 at 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 at 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.

--
Sent from my phone. Please excuse my brevity.