{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# R or Python? No, Julia.\n", "\n", "最近こんな感じの記事ばかり見かけます。RとPythonどっちが良いの?ってやつ。\n", "\n", "- https://news.mynavi.jp/article/20190619-845288/\n", "- https://news.mynavi.jp/article/20190619-845288/\n", "- https://www.messyer813.com/entry/2018/08/19/120959\n", "- https://uxmeetsdata.com/python-vs-r/\n", "\n", "どの言語いいかなんて一長一短だし,ほんと不毛だとおもいます。この不毛な争いを解決すべく,Juliaを使う人も多いはず(?)\n", "\n", "Juliaから他の言語を呼び出せることは前から知っていたのですが,ちゃんといじったことがなかったので,今回はトライしてみます。ちなみにRからもJuliaは動かせますし,Pythonからも動かせるらしいです。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## RCall.jlを使う\n", "\n", "`RCall`はJuliaからRを呼び出すPkgです。PyCallってのもあるようです。私はpyてょn使えないので,気になる方は[こちら](https://github.com/JuliaPy/PyCall.jl)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# set up\n", "using Pkg\n", "Pkg.add(\"RCall\")" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "R version 3.6.0 (2019-04-26) -- \"Planting of a Tree\"\n", "Copyright (C) 2019 The R Foundation for Statistical Computing\n", "Platform: x86_64-w64-mingw32/x64 (64-bit)\n", "\n", "R is free software and comes with ABSOLUTELY NO WARRANTY.\n", "You are welcome to redistribute it under certain conditions.\n", "Type 'license()' or 'licence()' for distribution details.\n", "\n", "R is a collaborative project with many contributors.\n", "Type 'contributors()' for more information and\n", "'citation()' on how to cite R or R packages in publications.\n", "\n", "Type 'demo()' for some demos, 'help()' for on-line help, or\n", "'help.start()' for an HTML browser interface to help.\n", "Type 'q()' to quit R.\n", "\n" ] } ], "source": [ "using RCall" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "基本的にはこれでOKですが,時々precompileでエラーを吐きます。エラーではPkg.buildしろって言われるのですが,`Pkg.Build`してもこんなエラーがでてくるときがあります。\n", "```{Julia}\n", "> LoadError: R cannot be found. Set the \"R_HOME\" environment variable to re-run Pkg.build(\"RCall\").\n", "```\n", "\n", "JuliaのENVにRのパスが通っていなかったりしますので,こんな設定が必要になるかもしれません。JuliaのENVにRのパスである`R_HOME`がないことを確認し,新しくRのパスを通してあげます。binまではいらないので,Rの各バージョンがあるディレクトリまでで十分です。\n", "```{Julia}\n", "ENV[\"R_HOME\"] # missing R ENV\n", "show(ENV)\n", "ENV[\"R_HOME\"]=\"C:\\\\hoge\\\\huga\\\\Documents\\\\R\\\\R-3.6.0\" # binまでは通さない。\n", "Pkg.build(\"RCall\") # rebuild\n", "```\n", "\n", "ちなみにENVにパスを通すのは毎回起動するたびにやらなきゃいけないみたいです。~/.julia/congig/startup.jlにパスを通すコードを書いておけば毎回起動時に通しておいてくれるので便利です。\n", "\n", "\n", "### RをJuliaから動かす\n", "\n", "そんなに難しくなく,基本は(1)juliaからRに変数を渡す,(2)Rで変数を操作する,(3)R変数をJuliaに渡す,というステップです。その逆も可能です。つまりR to JuliaもJulia to Rもできます。\n", "\n", "書き方は,[@bicycle1885](https://twitter.com/bicycle1885)さんがすでにまとめてくれています。\n", "\n", "http://bicycle1885.hatenablog.com/entry/2016/08/09/081525" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5-element Array{Int64,1}:\n", " 1\n", " 2\n", " 3\n", " 4\n", " 5" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rcopy(R\"1:5\") # get R eval" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "RObject{RealSxp}\n", "[1] 4\n" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = 3.0\n", "R\"1 + $x\" # An inline R expression" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1×10 LinearAlgebra.Adjoint{Float64,Array{Float64,1}}:\n", " 0.383796 0.868393 0.231633 0.298366 … -1.35082 0.12759 -0.887251" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = 10\n", "@rput x \n", "R\"r = rnorm(x)\"\n", "@rget r\n", "r'" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "RObject{NilSxp}\n", "NULL\n" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rcopy(R\"1 + $x\")\n", "# multiple lines\n", "R\"\"\"\n", "n = 100 + 1\n", "r = rnorm(n)\n", "plot(c(1:n), r, type = \"l\")\n", "\"\"\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Juliaのloopの中にRを忍ばせることもできるので,モンテカルロシミュレーションなどをやるときに,**「Rのパッケージを使って分析したいけど,重たい処理はJuliaでやりたい」**ってときに便利かもしれません。" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The iteration time is 1 in R, and 1 in Julia.\n", "The iteration time is 2 in R, and 2 in Julia.\n", "The iteration time is 3 in R, and 3 in Julia.\n", "The iteration time is 4 in R, and 4 in Julia.\n", "The iteration time is 5 in R, and 5 in Julia.\n", "The iteration time is 6 in R, and 6 in Julia.\n", "The iteration time is 7 in R, and 7 in Julia.\n", "The iteration time is 8 in R, and 8 in Julia.\n", "The iteration time is 9 in R, and 9 in Julia.\n", "The iteration time is 10 in R, and 10 in Julia.\n" ] } ], "source": [ "for i in 1:10\n", " @rput i\n", " R\"\"\"\n", " cat(\"The iteration time is\",i,\"in R\")\n", " t = i\n", " \"\"\"\n", " @rget t\n", " println(\", and $t in Julia.\")\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### RのデータをJuliaで扱う\n", "\n", "`reval`および`rcall`関数を使えば,Julia上でRのデータや関数を扱うことができます。\n", "たとえばデータフレームやtibbleも使えます。" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "RObject{VecSxp}\n", " Sepal.Length Sepal.Width Petal.Length Petal.Width Species\n", "1 5.1 3.5 1.4 0.2 setosa\n", "2 4.9 3.0 1.4 0.2 setosa\n", "3 4.7 3.2 1.3 0.2 setosa\n", "4 4.6 3.1 1.5 0.2 setosa\n", "5 5.0 3.6 1.4 0.2 setosa\n", "6 5.4 3.9 1.7 0.4 setosa\n", "7 4.6 3.4 1.4 0.3 setosa\n", "8 5.0 3.4 1.5 0.2 setosa\n", "9 4.4 2.9 1.4 0.2 setosa\n", "10 4.9 3.1 1.5 0.1 setosa\n", "11 5.4 3.7 1.5 0.2 setosa\n", "12 4.8 3.4 1.6 0.2 setosa\n", "13 4.8 3.0 1.4 0.1 setosa\n", "14 4.3 3.0 1.1 0.1 setosa\n", "15 5.8 4.0 1.2 0.2 setosa\n", "16 5.7 4.4 1.5 0.4 setosa\n", "17 5.4 3.9 1.3 0.4 setosa\n", "18 5.1 3.5 1.4 0.3 setosa\n", "19 5.7 3.8 1.7 0.3 setosa\n", "20 5.1 3.8 1.5 0.3 setosa\n", "21 5.4 3.4 1.7 0.2 setosa\n", "22 5.1 3.7 1.5 0.4 setosa\n", "23 4.6 3.6 1.0 0.2 setosa\n", "24 5.1 3.3 1.7 0.5 setosa\n", "25 4.8 3.4 1.9 0.2 setosa\n", "26 5.0 3.0 1.6 0.2 setosa\n", "27 5.0 3.4 1.6 0.4 setosa\n", "28 5.2 3.5 1.5 0.2 setosa\n", "29 5.2 3.4 1.4 0.2 setosa\n", "30 4.7 3.2 1.6 0.2 setosa\n", "31 4.8 3.1 1.6 0.2 setosa\n", "32 5.4 3.4 1.5 0.4 setosa\n", "33 5.2 4.1 1.5 0.1 setosa\n", "34 5.5 4.2 1.4 0.2 setosa\n", "35 4.9 3.1 1.5 0.2 setosa\n", "36 5.0 3.2 1.2 0.2 setosa\n", "37 5.5 3.5 1.3 0.2 setosa\n", "38 4.9 3.6 1.4 0.1 setosa\n", "39 4.4 3.0 1.3 0.2 setosa\n", "40 5.1 3.4 1.5 0.2 setosa\n", "41 5.0 3.5 1.3 0.3 setosa\n", "42 4.5 2.3 1.3 0.3 setosa\n", "43 4.4 3.2 1.3 0.2 setosa\n", "44 5.0 3.5 1.6 0.6 setosa\n", "45 5.1 3.8 1.9 0.4 setosa\n", "46 4.8 3.0 1.4 0.3 setosa\n", "47 5.1 3.8 1.6 0.2 setosa\n", "48 4.6 3.2 1.4 0.2 setosa\n", "49 5.3 3.7 1.5 0.2 setosa\n", "50 5.0 3.3 1.4 0.2 setosa\n", "51 7.0 3.2 4.7 1.4 versicolor\n", "52 6.4 3.2 4.5 1.5 versicolor\n", "53 6.9 3.1 4.9 1.5 versicolor\n", "54 5.5 2.3 4.0 1.3 versicolor\n", "55 6.5 2.8 4.6 1.5 versicolor\n", "56 5.7 2.8 4.5 1.3 versicolor\n", "57 6.3 3.3 4.7 1.6 versicolor\n", "58 4.9 2.4 3.3 1.0 versicolor\n", "59 6.6 2.9 4.6 1.3 versicolor\n", "60 5.2 2.7 3.9 1.4 versicolor\n", "61 5.0 2.0 3.5 1.0 versicolor\n", "62 5.9 3.0 4.2 1.5 versicolor\n", "63 6.0 2.2 4.0 1.0 versicolor\n", "64 6.1 2.9 4.7 1.4 versicolor\n", "65 5.6 2.9 3.6 1.3 versicolor\n", "66 6.7 3.1 4.4 1.4 versicolor\n", "67 5.6 3.0 4.5 1.5 versicolor\n", "68 5.8 2.7 4.1 1.0 versicolor\n", "69 6.2 2.2 4.5 1.5 versicolor\n", "70 5.6 2.5 3.9 1.1 versicolor\n", "71 5.9 3.2 4.8 1.8 versicolor\n", "72 6.1 2.8 4.0 1.3 versicolor\n", "73 6.3 2.5 4.9 1.5 versicolor\n", "74 6.1 2.8 4.7 1.2 versicolor\n", "75 6.4 2.9 4.3 1.3 versicolor\n", "76 6.6 3.0 4.4 1.4 versicolor\n", "77 6.8 2.8 4.8 1.4 versicolor\n", "78 6.7 3.0 5.0 1.7 versicolor\n", "79 6.0 2.9 4.5 1.5 versicolor\n", "80 5.7 2.6 3.5 1.0 versicolor\n", "81 5.5 2.4 3.8 1.1 versicolor\n", "82 5.5 2.4 3.7 1.0 versicolor\n", "83 5.8 2.7 3.9 1.2 versicolor\n", "84 6.0 2.7 5.1 1.6 versicolor\n", "85 5.4 3.0 4.5 1.5 versicolor\n", "86 6.0 3.4 4.5 1.6 versicolor\n", "87 6.7 3.1 4.7 1.5 versicolor\n", "88 6.3 2.3 4.4 1.3 versicolor\n", "89 5.6 3.0 4.1 1.3 versicolor\n", "90 5.5 2.5 4.0 1.3 versicolor\n", "91 5.5 2.6 4.4 1.2 versicolor\n", "92 6.1 3.0 4.6 1.4 versicolor\n", "93 5.8 2.6 4.0 1.2 versicolor\n", "94 5.0 2.3 3.3 1.0 versicolor\n", "95 5.6 2.7 4.2 1.3 versicolor\n", "96 5.7 3.0 4.2 1.2 versicolor\n", "97 5.7 2.9 4.2 1.3 versicolor\n", "98 6.2 2.9 4.3 1.3 versicolor\n", "99 5.1 2.5 3.0 1.1 versicolor\n", "100 5.7 2.8 4.1 1.3 versicolor\n", "101 6.3 3.3 6.0 2.5 virginica\n", "102 5.8 2.7 5.1 1.9 virginica\n", "103 7.1 3.0 5.9 2.1 virginica\n", "104 6.3 2.9 5.6 1.8 virginica\n", "105 6.5 3.0 5.8 2.2 virginica\n", "106 7.6 3.0 6.6 2.1 virginica\n", "107 4.9 2.5 4.5 1.7 virginica\n", "108 7.3 2.9 6.3 1.8 virginica\n", "109 6.7 2.5 5.8 1.8 virginica\n", "110 7.2 3.6 6.1 2.5 virginica\n", "111 6.5 3.2 5.1 2.0 virginica\n", "112 6.4 2.7 5.3 1.9 virginica\n", "113 6.8 3.0 5.5 2.1 virginica\n", "114 5.7 2.5 5.0 2.0 virginica\n", "115 5.8 2.8 5.1 2.4 virginica\n", "116 6.4 3.2 5.3 2.3 virginica\n", "117 6.5 3.0 5.5 1.8 virginica\n", "118 7.7 3.8 6.7 2.2 virginica\n", "119 7.7 2.6 6.9 2.3 virginica\n", "120 6.0 2.2 5.0 1.5 virginica\n", "121 6.9 3.2 5.7 2.3 virginica\n", "122 5.6 2.8 4.9 2.0 virginica\n", "123 7.7 2.8 6.7 2.0 virginica\n", "124 6.3 2.7 4.9 1.8 virginica\n", "125 6.7 3.3 5.7 2.1 virginica\n", "126 7.2 3.2 6.0 1.8 virginica\n", "127 6.2 2.8 4.8 1.8 virginica\n", "128 6.1 3.0 4.9 1.8 virginica\n", "129 6.4 2.8 5.6 2.1 virginica\n", "130 7.2 3.0 5.8 1.6 virginica\n", "131 7.4 2.8 6.1 1.9 virginica\n", "132 7.9 3.8 6.4 2.0 virginica\n", "133 6.4 2.8 5.6 2.2 virginica\n", "134 6.3 2.8 5.1 1.5 virginica\n", "135 6.1 2.6 5.6 1.4 virginica\n", "136 7.7 3.0 6.1 2.3 virginica\n", "137 6.3 3.4 5.6 2.4 virginica\n", "138 6.4 3.1 5.5 1.8 virginica\n", "139 6.0 3.0 4.8 1.8 virginica\n", "140 6.9 3.1 5.4 2.1 virginica\n", "141 6.7 3.1 5.6 2.4 virginica\n", "142 6.9 3.1 5.1 2.3 virginica\n", "143 5.8 2.7 5.1 1.9 virginica\n", "144 6.8 3.2 5.9 2.3 virginica\n", "145 6.7 3.3 5.7 2.5 virginica\n", "146 6.7 3.0 5.2 2.3 virginica\n", "147 6.3 2.5 5.0 1.9 virginica\n", "148 6.5 3.0 5.2 2.0 virginica\n", "149 6.2 3.4 5.4 2.3 virginica\n", "150 5.9 3.0 5.1 1.8 virginica\n" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "iris = reval(\"iris\")" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "RObject{VecSxp}\n", "# A tibble: 87 x 13\n", " name height mass hair_color skin_color eye_color birth_year gender\n", " \n", " 1 Luke~ 172 77 blond fair blue 19 male \n", " 2 C-3PO 167 75 gold yellow 112 \n", " 3 R2-D2 96 32 white, bl~ red 33 \n", " 4 Dart~ 202 136 none white yellow 41.9 male \n", " 5 Leia~ 150 49 brown light brown 19 female\n", " 6 Owen~ 178 120 brown, gr~ light blue 52 male \n", " 7 Beru~ 165 75 brown light blue 47 female\n", " 8 R5-D4 97 32 white, red red NA \n", " 9 Bigg~ 183 84 black light brown 24 male \n", "10 Obi-~ 182 77 auburn, w~ fair blue-gray 57 male \n", "# ... with 77 more rows, and 5 more variables: homeworld , species ,\n", "# films , vehicles , starships \n" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "starwars = reval(\"starwars\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "もちろん変数にもアクセスできる。" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "RObject{CharSxp}\n", "\n" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "starwars[\"name\"][1]" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbAAAAFoCAMAAAAB/V5aAAAAZlBMVEUAAAAAADoAAGYAOjoAOpAAZrY6AAA6ADo6AGY6OmY6OpA6kNtmAABmADpmAGZmOgBmOpBmtv+QOgCQOjqQZgCQtpCQ29uQ2/+2ZgC2///bkDrb25Db////tmb/25D//7b//9v///96YeKXAAANvElEQVR4nO3di3bbNhIGYKRbp2nspCtnu7a1tSS+/0uuqBtxGQCDG4kh///02JKAAUB+oi6OxKoBERW19AKQtABMWAAmLAATFoAJC8CEBWDCAjBhAZiwAExYACYsABMWgAkLwIQFYMICMGEBmLAATFgAJiwAExaACQvAhAVgwgIwYQGYsABMWAAmLAATFoAJC8CEBWDCAjBhAZiwAExYACYsABMWgAkLwIQFYMICMGEBmLAATFgAJiwAExaACQvAhAVgwgIwYQGYsABMWAAmLAATFoAJC8CEBWDCAjBhAZiwAExYSsAU0iKlYIevl2F++8ioRdJTCnZ63V1+f/7+T3ItkpFSsOPPD+N3Si2SERxhwlL8HHZ8wXPYnCkGa1OL+AIwYakFpr3oCL9jAGNZZj/CAFaWlYBt524AMGGTbw6swfyiwG5vw6g3YgBrkeIj7PT6nFIb+2tzZgDGax5z/PGWUAuwtpNVfw7LAWOU9APWWg9g5QFY+iIAVmH6CmCKu4huwBShV3VKgJUnByy2DG/7tsHq6AHMGqICmCIu8UZmZCNgnKGVVZM2F9kOsLTalYOp+xXl/PTWxMZMKgQYI2sGUwPAWDMDjOwJsFhtZTD2YBqYIm8uyTbAWK/v64OpoQGYvgyAccCig/UGxl8wu4HVnFwLMGoZ1JjJDazm5FqAUcugxkxuYDUn1wKMWgY1ZnIDqzm5VgPjjC0eTHkWBzDuWgCWVgswahnUmMkNrObk2jwwb1f2YABjhFxnZbDH7pkBzL8PdTDz5cZ6wBRrbIDxG1jNqbXdgaVsXwqYWg/YdA/0tLvX+wALvPQBmHkdYJwGVvNwORPO0557FoFEMLUOMGJxy4Gdfr0N+6ez23fOeToiYPY+AVhCA6v5+mX0/TP3TDgxMOu262YHXp/wwe7tBWDRVThgaugPrO4R1jGYfxXWv6JXAvNucnSZkZyfw55rPYc5YPcCgOnriCwzO9lg1hMOY1fFtt/3FzGAhWs1Dmr7ldFj6BPsMSMxOBss8KARW1ktMNaZcJTxY9VgGlWfYKxaHphywTzrAFhqc2JtHOyyKT2CaRSD9ssaMgEsvOL4vyjlNQ9p5/wFmN0vvmCqNLLOYJLOSNobGOvf5Iy1TW8klNaktE69gyWd8zcM9thSgPV5hNkdegab7mXSwZLO+QswreNSYCm19cFuDSlgA7WrY4u/TwMwp79aDMwYwnzf/ziQtwWmpp8EmLZTppuWAzOuO2CKHAVgACNaglkbmDlWCZi9yke3rYENzq6YDczScxc0vSIywfTRTbDrBYBNHWcHeywdYO4lgFEtwWwIzHlC00W0LgBzuncAZvSrDkZsvW/BREswMsCoO7HVEWDxiAOzlgCwdYE9bibAlPZLLhhxN6S7dwt2eSEJMKf7NsCCSxYApoiL/YHpSweYc1GZe4iaAWBJzUm1/YOZRgDTfgXBtF3RGix0UMXAtDEBdv8dBdP3T2gpAIsnCkYi6Ze7AzPXDzD7MsColmAagSm3x9Jg5iwAGwZin3UHps1Mr9IYYuVg+r5YB9hUQ1wHmGcGgKU0p9RKAiOuOJPq3SSBHb7uTq9Kud+FEAlm7MtVgo3fXnnfcc7TATByKnuG+xitwI4/P8ZzqzC+H1Yf7NGwFNhjBYLAxsPr83kYPp9itd2AGUjbAxveL98Pc73mBQuvVGk7Mwym96gGZg3hgim7cZ2vEgGW3JxSmw6mtM4As9aZ1zwlfiactYDpVXEwavVdgMVrG4EZvQJL6RrMuGzf4sweymbATLg1g7HPhBMGU0RXgNGbEkoUjH+ejh7ADIi+wXwbVArGPxOOEDBtsFIwpXchN8+e0d4oelNC2d4RlgVmrLFvMP6ZcBYEs0axwczytYNxa8nlKbrz3GDKfhKpADYoAowed2Vgym03ulU5wowT21h7NB1MGb8Gq7+z9bXBbg965MNerJa41iWY2XlRsHtB0RH2/nz+sSf+Is+ota8lgd03uy8w83CoCjZVlYBdX7MTr9wZtc61lmCBjfSDKadzKzBlzu8cp0ZVCdjp9XKEEZ/biNc61wDWHmwYP2ZD/Rslp9a5ptwlbwrMrPYVl4FlZSYwfTd0COZZqX5hlWDUaADzNn9WfFnfO5g9pTOmALDjyy7cjTE0wO43zQGW+IKeGnqVYI+RWWBK66uPXB/s+sY5NQ3BjMeWIjBjv95vFQ/m/4t8vNa9VgNM33KA8ZsTahcBMwYatB2n3e4HWQ7M6EZuki8Ai4I5s/cAthf6kKj9Lah3sMfPGmDHH2+fT7X+Wk+CkX03AmbNVgXs58f1v3Dn4NCCwKh7vjO5uS2dgZ1+vZ3/O3wD2DS5uS0cMEeiHdhwtvpUKvHNWDsw664aADN3lUVwvSkZjPo8QW9gWekWzPjl+78XD9MudNq7B2v/p6lkMGcUcu+XgdF3Aglgl28xJ4cB5srp1wBGhHeEtfrTVGUw589MytpNFFhg4T4wZ4LewPKyVbDHy1bRYMRG6jfngLn7FWAywCK3ubsqAmauozaYdavzQDELGPmeugGY0i8CLL05+DluP5izZoCZm9XyCDu+nKkSjzDvms2bZwELpT5YaONne0g8vvz+P4A5w/cLNn4xnXqL1hbMfse7LBgxfC7YfcyWYIzaSmA6WxrYtG8BxqkNgjmzVATTH7UANiV26qI1gZk9OGD6cd4JWKy2Itj9BmFgnuPOLFNTX4DlgYU7FYFZd4iZwJinLgqBuZMArBkY98QqGWDK6DyBACyy5GC4py4CWCdgsx1h1+1w94teIxtMk2oIxj11EcAKwPQ1FIMxayuBEbt90NuXBDMe2wD20LL2i14DMIABrB6YW7MqMHsvEZc9S84NF4yYQzbYvQlgawBzdr4sMGJDH72lgymqn7vzAeYOswiYvZsB5tYock7l7FKARWvNywVg/hUtC0bck6qB+e75viXnBmB0P6sHwOxJW4JNUwIMYNRAawOjJn2A2XuAAxbrA7Cp+/WHCve0R2KBDUpvjw0Z6VII5u4L2WDGsnsGc797C7BVgNk93D2zHrDwYgDGaGbXAgxgbo27/ddfwsCmX8RAHYBRU3QCFp3T6BEG820mwJxJAcaMrxZgeg+AOQuYC8xtinUDWHWwaBeATaW1wAaA8VIIpqaLgZ72SLLBjJU2Ajt8VV/eOP/jbWdd+uKIUoAR45SDjd9eGf8HfgAjmmLdlH30zAB2hXp/AhjRFOu2BNjt+2H7f7nnwgFYtJuaH2w4vlxOtr2PnByMWBdxRS8FGDFOBbCM2jyw2N5bHZi7B9xrwUlTszSYMi/MDsbo5gEzN70NWOxMOMS6iCv6tPXA3PpOwYYZwVJqqXuV26MLMEaPzYH5emwCTNnd9FvbgDHPhONtAJgzX1Mw7nk6vA0+MOW0R5faMZjn3rYAGPdMON4GgDnzbe4IIzdUIBi5zOLnMOaZcLwNdC/VB1g88Rf+oX5LgGXULgVmXwQYszYJjL2WZLAaXpXBrFu7BPN1yQdTgsDCfQFmXBQCRj5q+ufhLSettjWY5ykKYJEsAnb5BbCsAIyePH6r0tvlgvFK1HTBP20vYLHOgsAyJlZ8MGpP5AVgty4Au19YPZjyPeIBjDttxqAAe1wA2P1yFTDuKADz1awKbFDbAXMHABh72vRBs8CmSnc7ib4A49YCjN0ZYFpfgNWszQe7/QBYcgCW3s3uLAcsu+YGxtiuWcFyx3S2BGCFaQ1mjw+wwgAsuzb0QEL17RdMHx5gj74AW7hWr4m9ygRYB7UAizc3qy2dLzp39J1azqwtUh0s4wt9jQKweHPe140aJQks/rokY9YWqQ2W84W+RgFYvLnbI4zTXQZY4nzx5WR8oa9RABZvblY7x3wAq1grYb5lUgss5dRFSEFWdIRtIwATlhX9pWMbWdH7sG1kRX/p2EZwhAlLy790IC1SCsZI6SBbr08ZAGAd1ANMWD3AhNUDTFg9wITVA0xY/exgyHwBmLAATFgAJiwAExaACQvAhAVgwgIwYQGYsJSDHV+U++kBbsaPZO2Kxrh8hCG7/vSqvrwV1J/XP/5TfG794dtUzByjGGzcYfunzOLjj7fh8MdbyRj7M3h+/ftu/LBKdv24/n1+/eeofSvmjlEMNn6a6uD+X9R5+RxX+L4rGOPw51+7/DXcPgqWXX/4/s9YnFn//uXvc9GtmDtGMdhlzec7WnbOxfljnH7993zPzK4/fP/P+JCYXX87wvLnPwvdirljFIONH38rATu9PheMsX8eH0qy6w9fL9r581+fePLnP4PdirljLH2EHV+eC8Y4F57KjrCke7db/8fb8Pnbh6gjrOg57HIXLxhjf/kg33P+c9i/L3spu/52WOQ/By7wHDY+pGW/Srx6FY0xHmH59e+761GaWX87wvLrv33cF88dY9n3YdcjZLfc+7BzYcn7qPML86L3cUu8D0PmDcCEBWDCAjBhAZiwAExYACYsABMWgAkLwIQFYMICMGEBmLAATFgAJiwAExaACQvAhAVgwgIwYVkv2PSZsYyPuvSb1YJ9Ps7wmPOVg36zVrDrFw3GYyvrKwf9Zq1g9kNi6Yeyu8lWwBK/ctBvtgKGI6z7mGB4Dus+JljiVw76zbrBrmh4H4YsF4AJC8CEBWDCAjBhAZiwAExYACYsABMWgAkLwIQFYMICMGEBmLAATFgAJiwAExaACcv/Aa5i4qjK0549AAAAAElFTkSuQmCC" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "RObject{IntSxp}\n", "[1] 55\n" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# using R function\n", "rcall(:plot, [1:100;], rand(100), type = \"l\", ylab = \"rand\")\n", "rcall(:sum, [1:10;])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "パッケージを使いたいときは,一応`@rlibrary`や`@rimport`といったマクロを使えますが,公式的にはトリプルクオーテーションで囲むのが良いとのこと。\n", "\n", "http://juliainterop.github.io/RCall.jl/stable/gettingstarted#@rlibrary-and-@rimport-macros-1" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "RObject{VecSxp}\n" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# using R package\n", "R\"\"\"\n", "library(tidyverse)\n", "ggplot(tibble(x = seq(-4, 4, len = 101), prob = dnorm(seq(-4, 4, len = 101))), aes(x = x, y = prob)) +\n", "geom_line()\n", "\"\"\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "いままではR一択で分析していたのですが,ここまで簡単にJuliaからRが使えると,もはや言語の壁はありませんね。" ] } ], "metadata": { "@webio": { "lastCommId": null, "lastKernelId": null }, "kernelspec": { "display_name": "Julia 1.1.1", "language": "julia", "name": "julia-1.1" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.1.1" } }, "nbformat": 4, "nbformat_minor": 2 }