Background
A Reddit user was looking for advice on whether to use RMarkdown, RNotebook, or Jupyter Notebook.
What are your experiences? Pros/cons?
Trying to figure out which to use for this biostats class.
Here’s my recommendation.
library(DiagrammeR)
library(magrittr)
ndf <- DiagrammeR::create_node_df(
n = 6,
nodes = 1:6,
type = c("BEGIN_END", "BEGIN_END", "DECISION", "DECISION", "CONCLUSION", "CONCLUSION"),
label = c(
"START",
"END",
"Are you an R\nuser already?",
"Are you a Python\nuser already?",
"Use Jupyter",
"Use RNotebook"),
shape = c(
"ellipse",
"ellipse",
"diamond",
"diamond",
"box",
"box"
),
width = c(2, 2, 3, 3, 2, 2),
height = c(0.4, 0.4, 0.9, 0.9, 0.55, 0.55)
)
edf <- DiagrammeR::create_edge_df(
from = c(1, 3, 3, 6, 4, 5, 4),
to = c(3, 4, 6, 2, 5, 2, 6),
color = "black",
label = c(
"",
"NO",
"YES",
"",
"YES",
"",
"NO")
)
g1 <- DiagrammeR::create_graph(
nodes_df = ndf,
edges_df = edf
)
g2 <- g1 %>% DiagrammeR::add_global_graph_attrs(
attr_type = "graph",
attr = "layout",
value = "dot"
)
DiagrammeR::render_graph(g2)
Rationale
I have no hands-on experience with Jupyter, so I can’t make a specific recommendation for it, other than to use it if you’re already comfortable in Python.
As for why I recommend RNotebook over RMarkdown, RNotebook is an evolution of RMarkdown. With RNotebook, you still write in standard RMarkdown. However, the biggest difference between the two paradigms is how code chunks get rendered within the RStudio environment.
This Stackoverflow post explains the differences well. The bottom line is that there is no syntactical difference RMarkdown and RNotebook. The only real difference is how they are rendered in the RStudio code editor. For small documents, you won’t notice a difference. However, for very large documents with CPU intensive code sections that generate output, RNotebook will perform better.
Edits
Edit 1
I forgot to add a NO state to the question, Are you a Python user already?
LS0tDQp0aXRsZTogIlJlZGRpdDogUk1hcmtkb3duIHZzIFJOb3RlYm9vayB2cyBKdXB5dGVyIE5vdGVib29rIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KYGBge3IgU3RhcnR1cH0NCg0KDQpgYGANCg0KDQojIyBCYWNrZ3JvdW5kDQoNCkEgW1JlZGRpdCB1c2VyIHdhcyBsb29raW5nIGZvciBhZHZpY2VdKGh0dHBzOi8vd3d3LnJlZGRpdC5jb20vci9SbGFuZ3VhZ2UvY29tbWVudHMvOWcyOGdmL3JfbWFya2Rvd25fdnNfcl9ub3RlYm9va192c19qdXB5dGVyX25vdGVib29rLykgb24gd2hldGhlciB0byB1c2UgUk1hcmtkb3duLCBSTm90ZWJvb2ssIG9yIEp1cHl0ZXIgTm90ZWJvb2suDQoNCj4gKldoYXQgYXJlIHlvdXIgZXhwZXJpZW5jZXM/IFByb3MvY29ucz8qDQoNCj4gKlRyeWluZyB0byBmaWd1cmUgb3V0IHdoaWNoIHRvIHVzZSBmb3IgdGhpcyBiaW9zdGF0cyBjbGFzcy4qDQoNCkhlcmUncyBteSByZWNvbW1lbmRhdGlvbi4NCg0KYGBge3IgTWFpbkNvZGV9DQoNCmxpYnJhcnkoRGlhZ3JhbW1lUikNCmxpYnJhcnkobWFncml0dHIpDQoNCm5kZiA8LSBEaWFncmFtbWVSOjpjcmVhdGVfbm9kZV9kZigNCiAgbiA9IDYsDQogIG5vZGVzID0gMTo2LA0KICB0eXBlID0gYygiQkVHSU5fRU5EIiwgIkJFR0lOX0VORCIsICJERUNJU0lPTiIsICJERUNJU0lPTiIsICJDT05DTFVTSU9OIiwgIkNPTkNMVVNJT04iKSwNCiAgbGFiZWwgPSBjKA0KICAgICJTVEFSVCIsDQogICAgIkVORCIsDQogICAgIkFyZSB5b3UgYW4gUlxudXNlciBhbHJlYWR5PyIsDQogICAgIkFyZSB5b3UgYSBQeXRob25cbnVzZXIgYWxyZWFkeT8iLA0KICAgICJVc2UgSnVweXRlciIsDQogICAgIlVzZSBSTm90ZWJvb2siKSwNCiAgc2hhcGUgPSBjKA0KICAgICJlbGxpcHNlIiwNCiAgICAiZWxsaXBzZSIsDQogICAgImRpYW1vbmQiLA0KICAgICJkaWFtb25kIiwNCiAgICAiYm94IiwNCiAgICAiYm94Ig0KICApLA0KICB3aWR0aCA9IGMoMiwgMiwgMywgMywgMiwgMiksDQogIGhlaWdodCA9IGMoMC40LCAwLjQsIDAuOSwgMC45LCAwLjU1LCAwLjU1KQ0KKQ0KDQplZGYgPC0gRGlhZ3JhbW1lUjo6Y3JlYXRlX2VkZ2VfZGYoDQogIGZyb20gPSBjKDEsIDMsIDMsIDYsIDQsIDUsIDQpLA0KICB0byA9ICAgYygzLCA0LCA2LCAyLCA1LCAyLCA2KSwNCiAgY29sb3IgPSAiYmxhY2siLA0KICBsYWJlbCA9IGMoDQogICAgIiIsDQogICAgIk5PIiwNCiAgICAiWUVTIiwNCiAgICAiIiwNCiAgICAiWUVTIiwNCiAgICAiIiwNCiAgICAiTk8iKQ0KKQ0KDQpnMSA8LSBEaWFncmFtbWVSOjpjcmVhdGVfZ3JhcGgoDQogIG5vZGVzX2RmID0gbmRmLA0KICBlZGdlc19kZiA9IGVkZg0KKQ0KDQpnMiA8LSBnMSAlPiUgRGlhZ3JhbW1lUjo6YWRkX2dsb2JhbF9ncmFwaF9hdHRycygNCiAgYXR0cl90eXBlID0gImdyYXBoIiwNCiAgYXR0ciA9ICJsYXlvdXQiLA0KICB2YWx1ZSA9ICJkb3QiDQopDQoNCkRpYWdyYW1tZVI6OnJlbmRlcl9ncmFwaChnMikNCg0KDQpgYGANCg0KDQojIyBSYXRpb25hbGUNCkkgaGF2ZSBubyBoYW5kcy1vbiBleHBlcmllbmNlIHdpdGggSnVweXRlciwgc28gSSBjYW4ndCBtYWtlIGEgc3BlY2lmaWMgcmVjb21tZW5kYXRpb24gZm9yIGl0LCBvdGhlciB0aGFuIHRvIHVzZSBpdCBpZiB5b3UncmUgYWxyZWFkeSBjb21mb3J0YWJsZSBpbiBQeXRob24uDQoNCkFzIGZvciB3aHkgSSByZWNvbW1lbmQgUk5vdGVib29rIG92ZXIgUk1hcmtkb3duLCBSTm90ZWJvb2sgaXMgYW4gZXZvbHV0aW9uIG9mIFJNYXJrZG93bi4gV2l0aCBSTm90ZWJvb2ssIHlvdSBzdGlsbCB3cml0ZSBpbiBzdGFuZGFyZCBSTWFya2Rvd24uIEhvd2V2ZXIsIHRoZSBiaWdnZXN0IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIHBhcmFkaWdtcyBpcyBob3cgY29kZSBjaHVua3MgZ2V0IHJlbmRlcmVkIHdpdGhpbiB0aGUgUlN0dWRpbyBlbnZpcm9ubWVudC4NCg0KVGhpcyBbU3RhY2tvdmVyZmxvdyBwb3N0XShodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80MzgyMDQ4My9kaWZmZXJlbmNlLWJldHdlZW4tci1tYXJrZG93bi1hbmQtci1ub3RlYm9vaykgZXhwbGFpbnMgdGhlIGRpZmZlcmVuY2VzIHdlbGwuIFRoZSBib3R0b20gbGluZSBpcyB0aGF0IHRoZXJlIGlzIG5vIHN5bnRhY3RpY2FsIGRpZmZlcmVuY2UgUk1hcmtkb3duIGFuZCBSTm90ZWJvb2suIFRoZSBvbmx5IHJlYWwgZGlmZmVyZW5jZSBpcyBob3cgdGhleSBhcmUgcmVuZGVyZWQgaW4gdGhlIFJTdHVkaW8gY29kZSBlZGl0b3IuIEZvciBzbWFsbCBkb2N1bWVudHMsIHlvdSB3b24ndCBub3RpY2UgYSBkaWZmZXJlbmNlLiBIb3dldmVyLCBmb3IgdmVyeSBsYXJnZSBkb2N1bWVudHMgd2l0aCBDUFUgaW50ZW5zaXZlIGNvZGUgc2VjdGlvbnMgdGhhdCBnZW5lcmF0ZSBvdXRwdXQsIFJOb3RlYm9vayB3aWxsIHBlcmZvcm0gYmV0dGVyLg0KDQojIyBFZGl0cw0KDQojIyMgRWRpdCAxDQpJIGZvcmdvdCB0byBhZGQgYSAqTk8qIHN0YXRlIHRvIHRoZSBxdWVzdGlvbiwgKkFyZSB5b3UgYSBQeXRob24gdXNlciBhbHJlYWR5Pyo=