galaaz 0.4.9 → 0.4.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +798 -285
  3. data/blogs/galaaz_ggplot/galaaz_ggplot.Rmd +3 -12
  4. data/blogs/galaaz_ggplot/galaaz_ggplot.aux +5 -7
  5. data/blogs/galaaz_ggplot/galaaz_ggplot.html +69 -29
  6. data/blogs/galaaz_ggplot/galaaz_ggplot.pdf +0 -0
  7. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-html/midwest_rb.png +0 -0
  8. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-html/scatter_plot_rb.png +0 -0
  9. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-latex/midwest_rb.pdf +0 -0
  10. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-latex/scatter_plot_rb.pdf +0 -0
  11. data/blogs/galaaz_ggplot/midwest.Rmd +1 -9
  12. data/blogs/gknit/gknit.Rmd +37 -40
  13. data/blogs/gknit/gknit.html +32 -30
  14. data/blogs/gknit/gknit.md +36 -37
  15. data/blogs/gknit/gknit.pdf +0 -0
  16. data/blogs/gknit/gknit.tex +35 -37
  17. data/blogs/manual/manual.Rmd +548 -125
  18. data/blogs/manual/manual.html +509 -286
  19. data/blogs/manual/manual.md +798 -285
  20. data/blogs/manual/manual.pdf +0 -0
  21. data/blogs/manual/manual.tex +2816 -0
  22. data/blogs/manual/manual_files/figure-latex/diverging_bar.pdf +0 -0
  23. data/blogs/nse_dplyr/nse_dplyr.Rmd +240 -74
  24. data/blogs/nse_dplyr/nse_dplyr.html +191 -87
  25. data/blogs/nse_dplyr/nse_dplyr.md +361 -107
  26. data/blogs/nse_dplyr/nse_dplyr.pdf +0 -0
  27. data/blogs/nse_dplyr/nse_dplyr.tex +1373 -0
  28. data/blogs/ruby_plot/ruby_plot.Rmd +61 -81
  29. data/blogs/ruby_plot/ruby_plot.html +54 -57
  30. data/blogs/ruby_plot/ruby_plot.md +48 -67
  31. data/blogs/ruby_plot/ruby_plot.pdf +0 -0
  32. data/blogs/ruby_plot/ruby_plot_files/figure-html/dose_len.png +0 -0
  33. data/blogs/ruby_plot/ruby_plot_files/figure-html/facet_by_delivery.png +0 -0
  34. data/blogs/ruby_plot/ruby_plot_files/figure-html/facet_by_dose.png +0 -0
  35. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_by_delivery_color.png +0 -0
  36. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_by_delivery_color2.png +0 -0
  37. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_jitter.png +0 -0
  38. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_points.png +0 -0
  39. data/blogs/ruby_plot/ruby_plot_files/figure-html/final_box_plot.png +0 -0
  40. data/blogs/ruby_plot/ruby_plot_files/figure-html/final_violin_plot.png +0 -0
  41. data/blogs/ruby_plot/ruby_plot_files/figure-html/violin_with_jitter.png +0 -0
  42. data/blogs/ruby_plot/ruby_plot_files/figure-latex/dose_len.png +0 -0
  43. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facet_by_delivery.png +0 -0
  44. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facet_by_dose.png +0 -0
  45. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_by_delivery_color.png +0 -0
  46. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_by_delivery_color2.png +0 -0
  47. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_decorations.png +0 -0
  48. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_jitter.png +0 -0
  49. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_points.png +0 -0
  50. data/blogs/ruby_plot/ruby_plot_files/figure-latex/final_box_plot.png +0 -0
  51. data/blogs/ruby_plot/ruby_plot_files/figure-latex/final_violin_plot.png +0 -0
  52. data/blogs/ruby_plot/ruby_plot_files/figure-latex/violin_with_jitter.png +0 -0
  53. data/lib/R_interface/rdata_frame.rb +0 -12
  54. data/lib/R_interface/robject.rb +14 -14
  55. data/lib/R_interface/ruby_extensions.rb +3 -31
  56. data/lib/R_interface/rvector.rb +0 -12
  57. data/lib/gknit/knitr_engine.rb +5 -3
  58. data/lib/util/exec_ruby.rb +22 -61
  59. data/specs/tmp.rb +26 -12
  60. data/version.rb +1 -1
  61. metadata +22 -17
  62. data/bin/gknit_old_r +0 -236
  63. data/blogs/dev/dev.Rmd +0 -23
  64. data/blogs/dev/dev.md +0 -58
  65. data/blogs/dev/dev2.Rmd +0 -65
  66. data/blogs/dev/model.rb +0 -41
  67. data/blogs/dplyr/dplyr.Rmd +0 -29
  68. data/blogs/dplyr/dplyr.html +0 -433
  69. data/blogs/dplyr/dplyr.md +0 -58
  70. data/blogs/dplyr/dplyr.rb +0 -63
  71. data/blogs/galaaz_ggplot/galaaz_ggplot.log +0 -640
  72. data/blogs/galaaz_ggplot/galaaz_ggplot.md +0 -431
  73. data/blogs/galaaz_ggplot/galaaz_ggplot.tex +0 -481
  74. data/blogs/galaaz_ggplot/midwest.png +0 -0
  75. data/blogs/galaaz_ggplot/scatter_plot.png +0 -0
  76. data/blogs/ruby_plot/ruby_plot.tex +0 -1077
@@ -373,7 +373,7 @@ $(document).ready(function () {
373
373
  <h1 class="title toc-ignore">How to do reproducible research in Ruby with gKnit</h1>
374
374
  <h4 class="author"><em>Rodrigo Botafogo</em></h4>
375
375
  <h4 class="author"><em>Daniel Mossé - University of Pittsburgh</em></h4>
376
- <h4 class="date"><em>20/02/2019</em></h4>
376
+ <h4 class="date"><em>29/04/2019</em></h4>
377
377
 
378
378
  </div>
379
379
 
@@ -401,9 +401,9 @@ puts lst</code></pre>
401
401
  ## [1] 3</code></pre>
402
402
  <p>Now, any single code has dozens of variables that we might want to use and reuse between chunks. Clearly, such an approach becomes quickly unmanageable. Probably, because of this problem, it is very rare to see any <strong>R markdown</strong> document in the Ruby community.</p>
403
403
  <p>When variables can be used accross chunks, then no overhead is needed:</p>
404
- <pre class="ruby"><code>@lst = R.list(a: 1, b: 2, c: 3)
404
+ <pre class="ruby"><code>lst = R.list(a: 1, b: 2, c: 3)
405
405
  # any other code can be added here</code></pre>
406
- <pre class="ruby"><code>puts @lst</code></pre>
406
+ <pre class="ruby"><code>puts lst</code></pre>
407
407
  <pre><code>## $a
408
408
  ## [1] 1
409
409
  ##
@@ -544,7 +544,7 @@ g &lt;- ggplot(mpg_select, aes(displ, cty)) +
544
544
 
545
545
  g + geom_jitter(aes(col=manufacturer, size=hwy)) +
546
546
  geom_smooth(aes(col=manufacturer), method=&quot;lm&quot;, se=F)</code></pre>
547
- <p><img src="data:image/png;base64,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eBm7ZE6izOUns0GEEALw/43CMlX00ivUkr7//nu7AV9aWvq///u/GzZskEHd+fPnRWZm86iM323SpIlEhdqH16dPn23bttXehaDX/v37626afdtp1KiRWXJvJgHLX//613FxcbGxsV26dDGy05pLZhIu9ejRw1orevnD+PzzzydPnixuI0Qyba2e3/SniTsJcathWk8uA3gZu2ROoszlJ7NBhBAC8P+NwlJTJpE8Sc3ZRKot/SsyMvI3v/nN0aNHpTeqxbzaRnY6ne7ixYufffZZUFDQv/71r9orDBgwQARugX+RkH366acPPvigzaMyflckkdOmTSsoKBBI++677+655x7jv8THe++9d+/eveIATBvZ7dmzRySd8fHx5eXlYqfio7HnFlWm2bedwMDAH374QZ7xCxcuHDZs2NChQxctWmRcaM2l2hKQFraIm5sbN25Yew/e4mEIqItf9Le//W3mzJmqKmaUAF7GLpmTKHP5yWwQIYQA/H+j8IoVK+677z5fX1+RPq5Zs8Z0tZUrV3bq1El6T2nZsmVNmzZVCHhJzZs3F9t87rnnRHJpce/bt29/4oknpDfKBg0alJ6ebvOojN8V5H7qqaf8/PzE1x966CFxG2GWYkqvUXXu3Nn06yLz69evX8uWLcWx9e3b15joqzLNvu188cUXIj8WCbSMdQLMv7wlMWNcaM0li4qJifnzn/981113GXuyE/xTchjLly8XduXk5Dgc8DJ2yZ9EmcvP2gYRQsiTAV/HuwFrSkpKEom4qx0VcpRmz55tbGrngnLm5YcQAvCeD3gR8c+dO6fX61NSUnr27BkREQHgPVJxcXFt27a9ePGiSx1VQ11+CCEA7/mAX7duXdeuXX19fTt16jRjxgyLzb4AvAdcA+3bt9++fburHVhDXX4IIQCPEEIIIQCPEEIIIQCPEEIIIQCPEEIIIQCPEEIIIQCPEEIIAXiEEEIIAXjHKSUlZTpCCCGX14ULF6ApgFehf/7zn08//fQ/FejVV1/9xz/+8U930JgxY1555RW3OFQ3chVjcRVXG9DVvn37CsZDUwCvDvAKL5ry8vKKigq3sPvGjRvuMvi3G7mKsbiKqw3oqvJYjQA8gCdiYiyu4iqARwCesg3gMRZXcRXAIwBP2QbwGIuruArgATyAp2wDeFCEq7gK4AE8gCdiYiyXK64CeATgATwR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" /><!-- --></p>
547
+ <p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAqAAAAHgCAIAAAD17khjAABfX0lEQVR42u29C1xUdf7/j4mKl3WJXLtA6prb8i1/Zunu6kalfa11NVtW3dWvUZm5m/Xftmy9BWhp3sJL3lJLXa3WxDTBS95NE0QQAQVFkRAVFJGbCMwwDAz/D552moaZM2duMJfn63EePM4czpw585rP5/0878/5nM/Hpx4hhBBCHicfLEAIIYQAPEIIIYQAPEIIIYQAPEIIIYQAPEIIIYQAPEIIIQTgEUIIIQTgEUIIIQTgEUIIIQTgHfA9b8upOzj19BBCCCFPA7yPgVq3bh0cHPzhhx/W1dUBeK4bEEIIeQjg9ZoyZQqAB/AIIYTcHvDSelVVVVRUlHjZqVMnAA/gEUIIeQjghTQajXjp5+cnTzKjLdLLW7duvfLKKx07duzQoUNoaGhubq61Oxh+xBdffPHUU0/9/Oc/b9269QMPPDB58uSbN2/KfBGtVrtkyZI+ffq0b9++bdu24r07duww+vQXX3yxXbt2d91119SpU3U6nf69+/fvHzp0qPgs8cb+/fsfPHiw8ZetqKh47bXXAgICWrZsabLlg+KOEEIA3kUBr1KpFi1aJF4K2tkA+Oeff94QeEFBQSUlJVbtIK0L9I4ZM6YxQR9++OHy8nKT36KmpubZZ581B11pXVxSGP5r+fLlRuevV6tWrU6ePCnz7QA8QggBePcAvGE/u5deeunGjRs2AF7k2UlJSRqNJjEx8Ze//KXhvXyFO0jra9asEetih9jYWJG1C3gL3D7++ONio8i8TX6LhQsXiv/+7Gc/E+8tLi4WH5GQkCCIbnjw3/3ud9nZ2VVVVW+++aZ42bdvX/3bR44cmZKSIt6Vl5c3evRo8V/x1+jbdenS5dChQ2IfGVsQQggBeBcFvFBgYODHH39sA+D37dun37Jnzx6x5X/+53+s2kFaFyQW6ydOnDD8xPz8fLHxV7/6lclv8cgjj4j//uc//5H5jmlpadLLwsJC8bJ9+/Ymdy4rKxP/vf/++43evnv3bpnGD4QQQgDeFQEvrWu12nPnzv35z38WWxYvXmwt4FUqlX6LSJQN7+Ur3EFab9eunY8ZtWrVyuS3aNu2rXSbXOY71tbWmjx/sX3BggW9e/c2/NzWrVsb7SxOGMAjhBByS8BLKi4ulm6Qm9tHENGpgJdobU42A97clokTJ8p/kLnPBfAIIQTg3Q/wbdq00W+RUtvCwkLpZWpqqlOb6Pv27SvWMzIylH8LkX+Lt2zcuNEGwAcEBIj16Ojomzdv6nS68vJyhYBv0aKF2G7YGx8hhBCAd0XAi9T8/PnzUhP9Y489pt+nT58+Yss///lPkYJnZ2dL98gbI7BHjx5JSUk1NTWJiYndu3dv3IfO4g7S+r///W+pU9tnn3125coVrVZbXV2dlZX16aef9u/f3+S3kDr///znPxfvLSkp0Wg0x48fN+pkZ+5bS9l/bGys+JScnJxRo0YpBPxdd90ltn/77bcwHiGEALyLAt5Ivr6+IsPW77N8+XLD//7pT38yicBhw4bJPwVncQf9AaWO7sqb6MVFw//+7//KPyZnDvDSBY1ezz33nELAjxw5ksfkEEIIwLsB4Fu2bHnvvfeOGDFCZNiG+4gMderUqSJh/dnPfvbiiy/eunXLJALLy8vHjRt35513tm/fXlwEXLx40dodDD/04MGDgqCBgYGtWrUSSfbDDz/8xhtvJCUlmfsigvELFizo1auXn5+fOP6AAQOMBroxB/iioqLhw4e3a9fO399/7NixN2/eVAj4q1evCq8CAgKktnqKO0IIAXiEEEIIAXiEEEIIAXiEEEIIAXiEEEIIAXiEEEIIwGMBQgghBOARQgghBOARQgghBOARQgghBOARQgghBOARQgghAI8QQgghAI8QQgghAI8QQgghAI8QQgghAI8QQggBeCRv0H/Vrl277t27//Wvf929e7fRDvYcHIdltHfv3qFDh3bq1MnX1/fuu+8ePnz4gQMHHOKbOMKQIUNM/kts1x+/8QpCCAF4zwG8tFJdXZ2bm7thw4bg4OBXX33VywHfBGc+ffr0xx57bOfOnaWlpTU1NcnJySNGjJA+137uijcGBgampaUZbRdbxHYAjxAC8F4EeL0qKyt79er1xRdfuAUm3RTw+/bte+SRR1QqldH2uXPnOuQ0xBs//vjjv/zlL0bbR44cuXLlysaHBfAIIQDveJBs3Lixb9++bdu2bd++/aBBgzIyMnbv3v373/++Xbt2Ysuf//znGzdu6HdevXp1jx49WrVq1b179/Xr1xse6pNPPunWrZv4l9hB7GYYsmXCt8l/ff31108//bTRDpmZmX/84x87duzYunVrkXpGR0dbPCvDg1+/fv31118X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" /><!-- --></p>
548
548
  </div>
549
549
  <div id="ruby-chunks" class="section level3">
550
550
  <h3>Ruby chunks</h3>
@@ -552,21 +552,23 @@ g + geom_jitter(aes(col=manufacturer, size=hwy)) +
552
552
  <pre><code>```{ruby first_ruby_chunk}
553
553
  ```</code></pre>
554
554
  <p>In this example, the ruby chunk is called ‘first_ruby_chunk’. One important aspect of chunk labels is that they cannot be duplicated. If a chunk label is duplicated, gKnit will stop with an error.</p>
555
- <p>Another important point with Ruby chunks is that they are evaluated in the scope of a class called RubyChunk. To make sure that variables are available between chunks, they should be made as instance variables of the RubyChunk class. In the following chunk, variable ‘@a’, ‘@b’ and ‘@c’ are standard Ruby variables and ‘@vec’ and ‘@vec2’ are two vectors created by calling the ‘c’ method on the R module.</p>
555
+ <p>In the following chunk, variable a’, b’ and c’ are standard Ruby variables and vec’ and vec2’ are two vectors created by calling the ‘c’ method on the R module.</p>
556
556
  <p>In Galaaz, the R module allows us to access R functions transparently. The ‘c’ function in R, is a function that concatenates its arguments making a vector.</p>
557
557
  <p>It should be clear that there is no requirement in gknit to call or use any R functions. gKnit will knit standard Ruby code, or even general text without any code.</p>
558
- <pre class="ruby"><code>@a = [1, 2, 3]
559
- @b = &quot;US$ 250.000&quot;
560
- @c = &quot;The 'outputs' function&quot;
561
-
562
- @vec = R.c(1, 2, 3)
563
- @vec2 = R.c(10, 20, 30)</code></pre>
564
- <p>In this next block, variables ‘@a’, ‘@vec’ and ‘@vec2’ are used and printed.</p>
565
- <pre class="ruby"><code>puts @a
566
- puts @vec * @vec2</code></pre>
567
- <pre><code>## [1, 2, 3]
558
+ <pre class="ruby"><code>a = [1, 2, 3]
559
+ b = &quot;US$ 250.000&quot;
560
+ c = &quot;The 'outputs' function&quot;
561
+
562
+ vec = R.c(1, 2, 3)
563
+ vec2 = R.c(10, 20, 30)</code></pre>
564
+ <p>In the next block, variables a’, vec’ and vec2’ are used and printed.</p>
565
+ <pre class="ruby"><code>puts a
566
+ puts vec * vec2</code></pre>
567
+ <pre><code>## 1
568
+ ## 2
569
+ ## 3
568
570
  ## [1] 10 40 90</code></pre>
569
- <p>Note that @a is a standard Ruby Array and @vec and @vec2 are vectors that behave accordingly, where multiplication works as expected.</p>
571
+ <p>Note that a is a standard Ruby Array and vec and vec2 are vectors that behave accordingly, where multiplication works as expected.</p>
570
572
  </div>
571
573
  <div id="accessing-r-from-ruby" class="section level3">
572
574
  <h3>Accessing R from Ruby</h3>
@@ -594,32 +596,32 @@ puts @vec * @vec2</code></pre>
594
596
  <li>carb: Number of carburetors</li>
595
597
  </ul>
596
598
  <pre class="ruby"><code># copy the R variable :mtcars to the Ruby mtcars variable
597
- @mtcars = ~:mtcars
599
+ mtcars = ~:mtcars
598
600
 
599
601
  # create a new column 'car_name' to store the car names so that it can be
600
602
  # used for plotting. The 'rownames' of the data frame cannot be used as
601
603
  # data for plotting
602
- @mtcars.car_name = R.rownames(:mtcars)
604
+ mtcars.car_name = R.rownames(:mtcars)
603
605
 
604
606
  # compute normalized mpg and add it to a new column called mpg_z
605
607
  # Note that the mean value for mpg can be obtained by calling the 'mean'
606
608
  # function on the vector 'mtcars.mpg'. The same with the standard
607
609
  # deviation 'sd'. The vector is then rounded to two digits with 'round 2'
608
- @mtcars.mpg_z = ((@mtcars.mpg - @mtcars.mpg.mean)/@mtcars.mpg.sd).round 2
610
+ mtcars.mpg_z = ((mtcars.mpg - mtcars.mpg.mean)/mtcars.mpg.sd).round 2
609
611
 
610
612
  # create a new column 'mpg_type'. Function 'ifelse' is a vectorized function
611
613
  # that looks at every element of the mpg_z vector and if the value is below
612
614
  # 0, returns 'below', otherwise returns 'above'
613
- @mtcars.mpg_type = (@mtcars.mpg_z &lt; 0).ifelse(&quot;below&quot;, &quot;above&quot;)
615
+ mtcars.mpg_type = (mtcars.mpg_z &lt; 0).ifelse(&quot;below&quot;, &quot;above&quot;)
614
616
 
615
617
  # order the mtcar data set by the mpg_z vector from smaler to larger values
616
- @mtcars = @mtcars[@mtcars.mpg_z.order, :all]
618
+ mtcars = mtcars[mtcars.mpg_z.order, :all]
617
619
 
618
620
  # convert the car_name column to a factor to retain sorted order in plot
619
- @mtcars.car_name = @mtcars.car_name.factor levels: @mtcars.car_name
621
+ mtcars.car_name = mtcars.car_name.factor levels: mtcars.car_name
620
622
 
621
623
  # let's look at the first records of the final data frame
622
- puts @mtcars.head</code></pre>
624
+ puts mtcars.head</code></pre>
623
625
  <pre><code>## mpg cyl disp hp drat wt qsec vs am gear carb
624
626
  ## Cadillac Fleetwood 10.4 8 472 205 2.93 5.250 17.98 0 0 3 4
625
627
  ## Lincoln Continental 10.4 8 460 215 3.00 5.424 17.82 0 0 3 4
@@ -636,7 +638,7 @@ puts @mtcars.head</code></pre>
636
638
  ## Maserati Bora Maserati Bora -0.84 below</code></pre>
637
639
  <pre class="ruby"><code>require 'ggplot'
638
640
 
639
- puts @mtcars.ggplot(E.aes(x: :car_name, y: :mpg_z, label: :mpg_z)) +
641
+ puts mtcars.ggplot(E.aes(x: :car_name, y: :mpg_z, label: :mpg_z)) +
640
642
  R.geom_bar(E.aes(fill: :mpg_type), stat: 'identity', width: 0.5) +
641
643
  R.scale_fill_manual(name: 'Mileage',
642
644
  labels: R.c('Above Average', 'Below Average'),
@@ -649,14 +651,14 @@ puts @mtcars.ggplot(E.aes(x: :car_name, y: :mpg_z, label: :mpg_z)) +
649
651
  <div id="inline-ruby-code" class="section level3">
650
652
  <h3>Inline Ruby code</h3>
651
653
  <p>When using a Ruby chunk, the code and the output are formatted in blocks as seen above. This formatting is not always desired. Sometimes, we want to have the results of the Ruby evaluation included in the middle of a phrase. gKnit allows adding inline Ruby code with the ‘rb’ engine. The following chunk specification will create and inline Ruby text:</p>
652
- <pre><code>This is some text with inline Ruby accessing variable \@b which has value:
653
- ```{rb puts @b}
654
+ <pre><code>This is some text with inline Ruby accessing variable 'b' which has value:
655
+ ```{rb puts b}
654
656
  ```
655
657
  and is followed by some other text!</code></pre>
656
658
  <div style="margin-bottom:30px;">
657
659
 
658
660
  </div>
659
- <p>This is some text with inline Ruby accessing variable @b which has value: US$ 250.000 and is followed by some other text!</p>
661
+ <p>This is some text with inline Ruby accessing variable b which has value: US$ 250.000 and is followed by some other text!</p>
660
662
  <div style="margin-bottom:30px;">
661
663
 
662
664
  </div>
@@ -666,10 +668,10 @@ and is followed by some other text!</code></pre>
666
668
  <h3>The ‘outputs’ function</h3>
667
669
  <p>He have previously used the standard ‘puts’ method in Ruby chunks in order produce output. The result of a ‘puts’, as seen in all previous chunks that use it, is formatted inside a white box that follows the code block. Many times however, we would like to do some processing in the Ruby chunk and have the result of this processing generate and output that is “included” in the document as if we had typed it in <strong>R markdown</strong> document.</p>
668
670
  <p>For example, suppose we want to create a new heading in our document, but the heading phrase is the result of some code processing: maybe it’s the first line of a file we are going to read. Method ‘outputs’ adds its output as if typed in the <strong>R markdown</strong> document.</p>
669
- <p>Take now a look at variable ‘@c’ (it was defined in a previous block above) as ‘@c = “The ‘outputs’ function”. “The ‘outputs’ function” is actually the name of this section and it was created using the ’outputs’ function inside a Ruby chunk.</p>
671
+ <p>Take now a look at variable c’ (it was defined in a previous block above) as c = “The ‘outputs’ function”. “The ‘outputs’ function” is actually the name of this section and it was created using the ’outputs’ function inside a Ruby chunk.</p>
670
672
  <p>The ruby chunk to generate this heading is:</p>
671
673
  <pre><code>```{ruby heading}
672
- outputs &quot;### #{@c}&quot;
674
+ outputs &quot;### #{c}&quot;
673
675
  ```</code></pre>
674
676
  <p>The three ‘###’ is the way we add a Heading 3 in <strong>R markdown</strong>.</p>
675
677
  </div>
@@ -2177,7 +2179,7 @@ author: &quot;Rodrigo Botafogo&quot;
2177
2179
  tags: [Galaaz, Ruby, R, TruffleRuby, FastR, GraalVM, knitr, gknit]
2178
2180
  date: &quot;29 October 2018&quot;
2179
2181
  output:
2180
- pdf_document:
2182
+ pdf\_document:
2181
2183
  includes:
2182
2184
  in\_header: [&quot;../../sty/galaaz.sty&quot;]
2183
2185
  number\_sections: yes
@@ -4,7 +4,7 @@ author:
4
4
  - "Rodrigo Botafogo"
5
5
  - "Daniel Mossé - University of Pittsburgh"
6
6
  tags: [Tech, Data Science, Ruby, R, GraalVM]
7
- date: "20/02/2019"
7
+ date: "29/04/2019"
8
8
  bibliography: stats.bib
9
9
  output:
10
10
  html_document:
@@ -38,9 +38,8 @@ the same output and reports.
38
38
 
39
39
  The R community has put a great deal of effort in reproducible research. In 2002, Sweave was
40
40
  introduced and it allowed mixing R code with Latex generating high quality PDF documents. A
41
- Sweave
42
- document could include code, the results of executing the code, graphics and text such that it
43
- contained the whole narrative to reproduce the research. In
41
+ Sweave document could include code, the results of executing the code, graphics and text
42
+ such that it contained the whole narrative to reproduce the research. In
44
43
  2012, Knitr, developed by Yihui Xie from RStudio was released to replace Sweave and to
45
44
  consolidate in one single package the many extensions and add-on packages that
46
45
  were necessary for Sweave.
@@ -99,13 +98,13 @@ When variables can be used accross chunks, then no overhead is needed:
99
98
 
100
99
 
101
100
  ```ruby
102
- @lst = R.list(a: 1, b: 2, c: 3)
101
+ lst = R.list(a: 1, b: 2, c: 3)
103
102
  # any other code can be added here
104
103
  ```
105
104
 
106
105
 
107
106
  ```ruby
108
- puts @lst
107
+ puts lst
109
108
  ```
110
109
 
111
110
  ```
@@ -379,12 +378,9 @@ In this example, the ruby chunk is called 'first_ruby_chunk'. One important
379
378
  aspect of chunk labels is that they cannot be duplicated. If a chunk label is
380
379
  duplicated, gKnit will stop with an error.
381
380
 
382
- Another important point with Ruby chunks is that they are evaluated in the scope
383
- of a class called RubyChunk. To make sure that variables are
384
- available between chunks, they should be made as instance variables of the
385
- RubyChunk class. In the following chunk, variable '\@a', '\@b' and '\@c'
386
- are standard Ruby variables and '\@vec' and '\@vec2' are two vectors created
387
- by calling the 'c' method on the R module.
381
+ In the following chunk, variable 'a', 'b' and 'c' are standard Ruby variables
382
+ and 'vec' and 'vec2' are two vectors created by calling the 'c' method on the
383
+ R module.
388
384
 
389
385
  In Galaaz, the R module allows us to access R functions transparently. The 'c'
390
386
  function in R, is a function that concatenates its arguments making a vector.
@@ -396,28 +392,30 @@ any code.
396
392
 
397
393
 
398
394
  ```ruby
399
- @a = [1, 2, 3]
400
- @b = "US$ 250.000"
401
- @c = "The 'outputs' function"
395
+ a = [1, 2, 3]
396
+ b = "US$ 250.000"
397
+ c = "The 'outputs' function"
402
398
 
403
- @vec = R.c(1, 2, 3)
404
- @vec2 = R.c(10, 20, 30)
399
+ vec = R.c(1, 2, 3)
400
+ vec2 = R.c(10, 20, 30)
405
401
  ```
406
402
 
407
- In this next block, variables '\@a', '\@vec' and '\@vec2' are used and printed.
403
+ In the next block, variables 'a', 'vec' and 'vec2' are used and printed.
408
404
 
409
405
 
410
406
  ```ruby
411
- puts @a
412
- puts @vec * @vec2
407
+ puts a
408
+ puts vec * vec2
413
409
  ```
414
410
 
415
411
  ```
416
- ## [1, 2, 3]
412
+ ## 1
413
+ ## 2
414
+ ## 3
417
415
  ## [1] 10 40 90
418
416
  ```
419
417
 
420
- Note that \@a is a standard Ruby Array and \@vec and \@vec2 are vectors that behave accordingly,
418
+ Note that 'a' is a standard Ruby Array and 'vec' and 'vec2' are vectors that behave accordingly,
421
419
  where multiplication works as expected.
422
420
 
423
421
 
@@ -475,32 +473,32 @@ ten aspects are:
475
473
 
476
474
  ```ruby
477
475
  # copy the R variable :mtcars to the Ruby mtcars variable
478
- @mtcars = ~:mtcars
476
+ mtcars = ~:mtcars
479
477
 
480
478
  # create a new column 'car_name' to store the car names so that it can be
481
479
  # used for plotting. The 'rownames' of the data frame cannot be used as
482
480
  # data for plotting
483
- @mtcars.car_name = R.rownames(:mtcars)
481
+ mtcars.car_name = R.rownames(:mtcars)
484
482
 
485
483
  # compute normalized mpg and add it to a new column called mpg_z
486
484
  # Note that the mean value for mpg can be obtained by calling the 'mean'
487
485
  # function on the vector 'mtcars.mpg'. The same with the standard
488
486
  # deviation 'sd'. The vector is then rounded to two digits with 'round 2'
489
- @mtcars.mpg_z = ((@mtcars.mpg - @mtcars.mpg.mean)/@mtcars.mpg.sd).round 2
487
+ mtcars.mpg_z = ((mtcars.mpg - mtcars.mpg.mean)/mtcars.mpg.sd).round 2
490
488
 
491
489
  # create a new column 'mpg_type'. Function 'ifelse' is a vectorized function
492
490
  # that looks at every element of the mpg_z vector and if the value is below
493
491
  # 0, returns 'below', otherwise returns 'above'
494
- @mtcars.mpg_type = (@mtcars.mpg_z < 0).ifelse("below", "above")
492
+ mtcars.mpg_type = (mtcars.mpg_z < 0).ifelse("below", "above")
495
493
 
496
494
  # order the mtcar data set by the mpg_z vector from smaler to larger values
497
- @mtcars = @mtcars[@mtcars.mpg_z.order, :all]
495
+ mtcars = mtcars[mtcars.mpg_z.order, :all]
498
496
 
499
497
  # convert the car_name column to a factor to retain sorted order in plot
500
- @mtcars.car_name = @mtcars.car_name.factor levels: @mtcars.car_name
498
+ mtcars.car_name = mtcars.car_name.factor levels: mtcars.car_name
501
499
 
502
500
  # let's look at the first records of the final data frame
503
- puts @mtcars.head
501
+ puts mtcars.head
504
502
  ```
505
503
 
506
504
  ```
@@ -524,7 +522,7 @@ puts @mtcars.head
524
522
  ```ruby
525
523
  require 'ggplot'
526
524
 
527
- puts @mtcars.ggplot(E.aes(x: :car_name, y: :mpg_z, label: :mpg_z)) +
525
+ puts mtcars.ggplot(E.aes(x: :car_name, y: :mpg_z, label: :mpg_z)) +
528
526
  R.geom_bar(E.aes(fill: :mpg_type), stat: 'identity', width: 0.5) +
529
527
  R.scale_fill_manual(name: 'Mileage',
530
528
  labels: R.c('Above Average', 'Below Average'),
@@ -546,8 +544,8 @@ with the 'rb' engine. The following chunk specification will
546
544
  create and inline Ruby text:
547
545
 
548
546
  ````
549
- This is some text with inline Ruby accessing variable \@b which has value:
550
- ```{rb puts @b}
547
+ This is some text with inline Ruby accessing variable 'b' which has value:
548
+ ```{rb puts b}
551
549
  ```
552
550
  and is followed by some other text!
553
551
  ````
@@ -555,7 +553,7 @@ and is followed by some other text!
555
553
  <div style="margin-bottom:30px;">
556
554
  </div>
557
555
 
558
- This is some text with inline Ruby accessing variable \@b which has value:
556
+ This is some text with inline Ruby accessing variable 'b' which has value:
559
557
  US$ 250.000
560
558
  and is followed by some other text!
561
559
 
@@ -580,15 +578,15 @@ For example, suppose we want to create a new heading in our document, but the he
580
578
  phrase is the result of some code processing: maybe it's the first line of a file we are
581
579
  going to read. Method 'outputs' adds its output as if typed in the __R markdown__ document.
582
580
 
583
- Take now a look at variable '\@c' (it was defined in a previous block above) as
584
- '\@c = "The 'outputs' function". "The 'outputs' function" is actually the name of this
581
+ Take now a look at variable 'c' (it was defined in a previous block above) as
582
+ 'c = "The 'outputs' function". "The 'outputs' function" is actually the name of this
585
583
  section and it was created using the 'outputs' function inside a Ruby chunk.
586
584
 
587
585
  The ruby chunk to generate this heading is:
588
586
 
589
587
  ````
590
588
  ```{ruby heading}
591
- outputs "### #{@c}"
589
+ outputs "### #{c}"
592
590
  ```
593
591
  ````
594
592
 
@@ -1364,13 +1362,14 @@ author: "Rodrigo Botafogo"
1364
1362
  tags: [Galaaz, Ruby, R, TruffleRuby, FastR, GraalVM, knitr, gknit]
1365
1363
  date: "29 October 2018"
1366
1364
  output:
1367
- pdf_document:
1365
+ pdf\_document:
1368
1366
  includes:
1369
1367
  in\_header: ["../../sty/galaaz.sty"]
1370
1368
  number\_sections: yes
1371
1369
  ---
1372
1370
  ```
1373
1371
 
1372
+
1374
1373
  # Conclusion
1375
1374
 
1376
1375
  In order to do reproducible research, one of the main basic tools needed is a systhem that
Binary file
@@ -122,7 +122,7 @@
122
122
  \postauthor{\par}
123
123
  \predate{\centering\large\emph}
124
124
  \postdate{\par}
125
- \date{20/02/2019}
125
+ \date{29/04/2019}
126
126
 
127
127
  % usar portugues do Brasil
128
128
  % \usepackage[brazilian]{babel}
@@ -304,14 +304,14 @@ When variables can be used accross chunks, then no overhead is needed:
304
304
 
305
305
  \begin{Shaded}
306
306
  \begin{Highlighting}[]
307
- \OtherTok{@lst}\NormalTok{ = R.list(}\StringTok{a: }\DecValTok{1}\NormalTok{, }\StringTok{b: }\DecValTok{2}\NormalTok{, }\StringTok{c: }\DecValTok{3}\NormalTok{)}
307
+ \NormalTok{lst = R.list(}\StringTok{a: }\DecValTok{1}\NormalTok{, }\StringTok{b: }\DecValTok{2}\NormalTok{, }\StringTok{c: }\DecValTok{3}\NormalTok{)}
308
308
  \CommentTok{# any other code can be added here}
309
309
  \end{Highlighting}
310
310
  \end{Shaded}
311
311
 
312
312
  \begin{Shaded}
313
313
  \begin{Highlighting}[]
314
- \NormalTok{puts }\OtherTok{@lst}
314
+ \NormalTok{puts lst}
315
315
  \end{Highlighting}
316
316
  \end{Shaded}
317
317
 
@@ -630,12 +630,9 @@ In this example, the ruby chunk is called `first\_ruby\_chunk'. One
630
630
  important aspect of chunk labels is that they cannot be duplicated. If a
631
631
  chunk label is duplicated, gKnit will stop with an error.
632
632
 
633
- Another important point with Ruby chunks is that they are evaluated in
634
- the scope of a class called RubyChunk. To make sure that variables are
635
- available between chunks, they should be made as instance variables of
636
- the RubyChunk class. In the following chunk, variable `@a', `@b' and
637
- `@c' are standard Ruby variables and `@vec' and `@vec2' are two vectors
638
- created by calling the `c' method on the R module.
633
+ In the following chunk, variable `a', `b' and `c' are standard Ruby
634
+ variables and `vec' and `vec2' are two vectors created by calling the
635
+ `c' method on the R module.
639
636
 
640
637
  In Galaaz, the R module allows us to access R functions transparently.
641
638
  The `c' function in R, is a function that concatenates its arguments
@@ -647,31 +644,32 @@ text without any code.
647
644
 
648
645
  \begin{Shaded}
649
646
  \begin{Highlighting}[]
650
- \OtherTok{@a}\NormalTok{ = [}\DecValTok{1}\NormalTok{, }\DecValTok{2}\NormalTok{, }\DecValTok{3}\NormalTok{]}
651
- \OtherTok{@b}\NormalTok{ = }\StringTok{"US$ 250.000"}
652
- \OtherTok{@c}\NormalTok{ = }\StringTok{"The 'outputs' function"}
647
+ \NormalTok{a = [}\DecValTok{1}\NormalTok{, }\DecValTok{2}\NormalTok{, }\DecValTok{3}\NormalTok{]}
648
+ \NormalTok{b = }\StringTok{"US$ 250.000"}
649
+ \NormalTok{c = }\StringTok{"The 'outputs' function"}
653
650
 
654
- \OtherTok{@vec}\NormalTok{ = R.c(}\DecValTok{1}\NormalTok{, }\DecValTok{2}\NormalTok{, }\DecValTok{3}\NormalTok{)}
655
- \OtherTok{@vec2}\NormalTok{ = R.c(}\DecValTok{10}\NormalTok{, }\DecValTok{20}\NormalTok{, }\DecValTok{30}\NormalTok{)}
651
+ \NormalTok{vec = R.c(}\DecValTok{1}\NormalTok{, }\DecValTok{2}\NormalTok{, }\DecValTok{3}\NormalTok{)}
652
+ \NormalTok{vec2 = R.c(}\DecValTok{10}\NormalTok{, }\DecValTok{20}\NormalTok{, }\DecValTok{30}\NormalTok{)}
656
653
  \end{Highlighting}
657
654
  \end{Shaded}
658
655
 
659
- In this next block, variables `@a', `@vec' and `@vec2' are used and
660
- printed.
656
+ In the next block, variables `a', `vec' and `vec2' are used and printed.
661
657
 
662
658
  \begin{Shaded}
663
659
  \begin{Highlighting}[]
664
- \NormalTok{puts }\OtherTok{@a}
665
- \NormalTok{puts }\OtherTok{@vec}\NormalTok{ * }\OtherTok{@vec2}
660
+ \NormalTok{puts a}
661
+ \NormalTok{puts vec * vec2}
666
662
  \end{Highlighting}
667
663
  \end{Shaded}
668
664
 
669
665
  \begin{verbatim}
670
- ## [1, 2, 3]
666
+ ## 1
667
+ ## 2
668
+ ## 3
671
669
  ## [1] 10 40 90
672
670
  \end{verbatim}
673
671
 
674
- Note that @a is a standard Ruby Array and @vec and @vec2 are vectors
672
+ Note that `a' is a standard Ruby Array and `vec' and `vec2' are vectors
675
673
  that behave accordingly, where multiplication works as expected.
676
674
 
677
675
  \hypertarget{accessing-r-from-ruby}{%
@@ -747,32 +745,32 @@ performance for 32 automobiles (1973--74 models). The ten aspects are:
747
745
  \begin{Shaded}
748
746
  \begin{Highlighting}[]
749
747
  \CommentTok{# copy the R variable :mtcars to the Ruby mtcars variable}
750
- \OtherTok{@mtcars}\NormalTok{ = ~}\StringTok{:mtcars}
748
+ \NormalTok{mtcars = ~}\StringTok{:mtcars}
751
749
 
752
750
  \CommentTok{# create a new column 'car_name' to store the car names so that it can be}
753
751
  \CommentTok{# used for plotting. The 'rownames' of the data frame cannot be used as}
754
752
  \CommentTok{# data for plotting}
755
- \OtherTok{@mtcars}\NormalTok{.car_name = R.rownames(}\StringTok{:mtcars}\NormalTok{)}
753
+ \NormalTok{mtcars.car_name = R.rownames(}\StringTok{:mtcars}\NormalTok{)}
756
754
 
757
755
  \CommentTok{# compute normalized mpg and add it to a new column called mpg_z}
758
756
  \CommentTok{# Note that the mean value for mpg can be obtained by calling the 'mean'}
759
757
  \CommentTok{# function on the vector 'mtcars.mpg'. The same with the standard}
760
758
  \CommentTok{# deviation 'sd'. The vector is then rounded to two digits with 'round 2'}
761
- \OtherTok{@mtcars}\NormalTok{.mpg_z = ((}\OtherTok{@mtcars}\NormalTok{.mpg - }\OtherTok{@mtcars}\NormalTok{.mpg.mean)/}\OtherTok{@mtcars}\NormalTok{.mpg.sd).round }\DecValTok{2}
759
+ \NormalTok{mtcars.mpg_z = ((mtcars.mpg - mtcars.mpg.mean)/mtcars.mpg.sd).round }\DecValTok{2}
762
760
 
763
761
  \CommentTok{# create a new column 'mpg_type'. Function 'ifelse' is a vectorized function}
764
762
  \CommentTok{# that looks at every element of the mpg_z vector and if the value is below}
765
763
  \CommentTok{# 0, returns 'below', otherwise returns 'above'}
766
- \OtherTok{@mtcars}\NormalTok{.mpg_type = (}\OtherTok{@mtcars}\NormalTok{.mpg_z < }\DecValTok{0}\NormalTok{).ifelse(}\StringTok{"below"}\NormalTok{, }\StringTok{"above"}\NormalTok{)}
764
+ \NormalTok{mtcars.mpg_type = (mtcars.mpg_z < }\DecValTok{0}\NormalTok{).ifelse(}\StringTok{"below"}\NormalTok{, }\StringTok{"above"}\NormalTok{)}
767
765
 
768
766
  \CommentTok{# order the mtcar data set by the mpg_z vector from smaler to larger values}
769
- \OtherTok{@mtcars}\NormalTok{ = }\OtherTok{@mtcars}\NormalTok{[}\OtherTok{@mtcars}\NormalTok{.mpg_z.order, }\StringTok{:all}\NormalTok{]}
767
+ \NormalTok{mtcars = mtcars[mtcars.mpg_z.order, }\StringTok{:all}\NormalTok{]}
770
768
 
771
769
  \CommentTok{# convert the car_name column to a factor to retain sorted order in plot}
772
- \OtherTok{@mtcars}\NormalTok{.car_name = }\OtherTok{@mtcars}\NormalTok{.car_name.factor }\StringTok{levels: }\OtherTok{@mtcars}\NormalTok{.car_name}
770
+ \NormalTok{mtcars.car_name = mtcars.car_name.factor }\StringTok{levels: }\NormalTok{mtcars.car_name}
773
771
 
774
772
  \CommentTok{# let's look at the first records of the final data frame}
775
- \NormalTok{puts }\OtherTok{@mtcars}\NormalTok{.head}
773
+ \NormalTok{puts mtcars.head}
776
774
  \end{Highlighting}
777
775
  \end{Shaded}
778
776
 
@@ -797,7 +795,7 @@ performance for 32 automobiles (1973--74 models). The ten aspects are:
797
795
  \begin{Highlighting}[]
798
796
  \NormalTok{require }\StringTok{'ggplot'}
799
797
 
800
- \NormalTok{puts }\OtherTok{@mtcars}\NormalTok{.ggplot(E.aes(}\StringTok{x: :car_name}\NormalTok{, }\StringTok{y: :mpg_z}\NormalTok{, }\StringTok{label: :mpg_z}\NormalTok{)) +}
798
+ \NormalTok{puts mtcars.ggplot(E.aes(}\StringTok{x: :car_name}\NormalTok{, }\StringTok{y: :mpg_z}\NormalTok{, }\StringTok{label: :mpg_z}\NormalTok{)) +}
801
799
  \NormalTok{ R.geom_bar(E.aes(}\StringTok{fill: :mpg_type}\NormalTok{), }\StringTok{stat: 'identity'}\NormalTok{, }\StringTok{width: }\FloatTok{0.5}\NormalTok{) +}
802
800
  \NormalTok{ R.scale_fill_manual(}\StringTok{name: 'Mileage'}\NormalTok{,}
803
801
  \StringTok{labels: }\NormalTok{R.c(}\StringTok{'Above Average'}\NormalTok{, }\StringTok{'Below Average'}\NormalTok{),}
@@ -820,13 +818,13 @@ phrase. gKnit allows adding inline Ruby code with the `rb' engine. The
820
818
  following chunk specification will create and inline Ruby text:
821
819
 
822
820
  \begin{verbatim}
823
- This is some text with inline Ruby accessing variable \@b which has value:
824
- ```{rb puts @b}
821
+ This is some text with inline Ruby accessing variable 'b' which has value:
822
+ ```{rb puts b}
825
823
  ```
826
824
  and is followed by some other text!
827
825
  \end{verbatim}
828
826
 
829
- This is some text with inline Ruby accessing variable @b which has
827
+ This is some text with inline Ruby accessing variable `b' which has
830
828
  value: US\$ 250.000 and is followed by some other text!
831
829
 
832
830
  Note that it is important not to add any new line before of after the
@@ -849,16 +847,16 @@ but the heading phrase is the result of some code processing: maybe it's
849
847
  the first line of a file we are going to read. Method `outputs' adds its
850
848
  output as if typed in the \textbf{R markdown} document.
851
849
 
852
- Take now a look at variable `@c' (it was defined in a previous block
853
- above) as `@c = ``The `outputs' function''. ``The `outputs' function''
854
- is actually the name of this section and it was created using the
855
- 'outputs' function inside a Ruby chunk.
850
+ Take now a look at variable `c' (it was defined in a previous block
851
+ above) as `c = ``The `outputs' function''. ``The `outputs' function'' is
852
+ actually the name of this section and it was created using the 'outputs'
853
+ function inside a Ruby chunk.
856
854
 
857
855
  The ruby chunk to generate this heading is:
858
856
 
859
857
  \begin{verbatim}
860
858
  ```{ruby heading}
861
- outputs "### #{@c}"
859
+ outputs "### #{c}"
862
860
  ```
863
861
  \end{verbatim}
864
862
 
@@ -1248,7 +1246,7 @@ author: "Rodrigo Botafogo"
1248
1246
  tags: [Galaaz, Ruby, R, TruffleRuby, FastR, GraalVM, knitr, gknit]
1249
1247
  date: "29 October 2018"
1250
1248
  output:
1251
- pdf_document:
1249
+ pdf\_document:
1252
1250
  includes:
1253
1251
  in\_header: ["../../sty/galaaz.sty"]
1254
1252
  number\_sections: yes