差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
r:introduction [2020/03/08 22:23] – [R言語とは] watalur:introduction [2020/03/08 23:15] (現在) – [RよりPythonの方がかっこいいかもしれません] watalu
行 1: 行 1:
 ==== R言語とは ==== ==== R言語とは ====
 +
 +=== Rはインタプリタ ===
 +
 +次の1行は、Rで書いたHello, World!です。
 +<code>
 +print("Hello, World!")
 +</code>
 +
 +Rは関数型プログラミング言語であり、またオブジェクト指向言語です。
 +Rのコードにはmain関数やメインルーチンがありません。
 +インタプリタとしてのソフトウェアRにコードを読ませれば、即座に実行されていきます。
 +
 +Rコンパイラの要望があった時代もありましたが、現在ではインタプリタ=遅いという印象も払拭され、多くの言語は、その実装方針のまま受け入れられるようになっています。
 +
 +=== Rでできること ===
 +
 +統計学に基づくデータの分析やシミュレーションは、およそすべてRで実行できます。
 +機械学習の手法の多くも、Rで実行できます。
 +
 +=== Rが苦手なこと ===
 +
 +並列分散処理、特に大規模なものは、控えめに言えば得意でない、中立的に発言すると苦手、積極的に発言すると、かなり困難です。
  
 === Rはデータサイエンス用ソフトウェア === === Rはデータサイエンス用ソフトウェア ===
行 5: 行 27:
 Rは[[https://r4ds.had.co.nz/index.html|データサイエンス用のソフトウェア]]です。[[https://online-learning.harvard.edu/course/data-science-r-basics|Harvard Universityのオンラインコース]]でも、[[https://ja.coursera.org/specializations/data-science-foundations-r|John Hopkins Univesityのオンラインコース]]でも、用いられています。 Rは[[https://r4ds.had.co.nz/index.html|データサイエンス用のソフトウェア]]です。[[https://online-learning.harvard.edu/course/data-science-r-basics|Harvard Universityのオンラインコース]]でも、[[https://ja.coursera.org/specializations/data-science-foundations-r|John Hopkins Univesityのオンラインコース]]でも、用いられています。
  
-=== RはPythonよりも古くはありません ===+=== RはPythonよりも古くはない ===
  
-Rが古く、Pythonが新しい、という雰囲気を醸し出ます。しかし開発開始から数えれば、[[https://en.wikipedia.org/wiki/R_(programming_language)|Rの最初の公開は1993年]]で、[[https://en.wikipedia.org/wiki/History_of_Python|Pythonの最初の公開は1991年]]ですから、Pythonの方が先輩です。参考までに、言語としてRの原典にあたるS言語は、両者よりもずっと古く、[[https://en.wikipedia.org/wiki/S_(programming_language)|最初のリリースは1976年]]でした。+Rが古く、Pythonが新しい、という雰囲気の話耳にることあります。しかし開発開始から数えれば、[[https://en.wikipedia.org/wiki/R_(programming_language)|Rの最初の公開は1993年]]で、[[https://en.wikipedia.org/wiki/History_of_Python|Pythonの最初の公開は1991年]]ですから、Pythonの方が先輩です。参考までに、言語としてRの原典にあたるS言語は、両者よりもずっと古く、[[https://en.wikipedia.org/wiki/S_(programming_language)|最初のリリースは1976年]]でした。
  
-RとPythonは、開発目的と利用目的が共に異なます。Rは "R is a free software environment for statistical computing and graphics." だそうです。Pythonは "Python is a programming language that lets you work quickly and integrate systems more effectively."だそうです。ほら、違うでしょう。R得意としてPythonが苦手なとは、プログラミング中にデータサイエンスに専念できることです。Pythonが得意とてRが苦手なことは、並列処理やハードウェアの利用、たサービスの提供などでしょうか。Pythonはプログラミング言語なので、データサイエンス以外により多くのことが可能です。+=== RりPythonの方かっいいかもせん ===
  
-片方でしできないことあまり多くはありませんが片方でやった方がよいことは多いです。どちらが良いかう議論は不毛です。目的に合わせて、適切なプログラミング言語や環境選択すれば良いのです。たとえば深層学習を試してみたいならPythonを選択するのがよいしょう。それでもTensorFlow、PyTorch、Kerasなど、どれを試すかを悩むことになります。TensorFlowやKerasはRからも呼び出せます。多くの機械学習の手法、まずRからリリースされます。競争相手Rでリリースているためかもしれません。深層学習とれらを比較するは、PythonとRの双方を使う必要があります。scikit-learnの開発チームはよい仕事をしてくれていますが手法の進化普及は常に同じ速度では進みせん。 +Matplotlibを始めに、Pythonの幾つのサードパーティが提供するライブラリやモジュールのグラフ描画機能は、センスがよ商業レベルに近緻密さ持ちます。 
-=== Rはインタプリタ === +えばWordCloudははRでも描くことが可能でが、もともとはPython発でした 
- +Rのグラフ描画能も柔軟でありますが、Pythonが醸し出す格好よには追いつけていません。 
-次の5行は、Rで書いたHello, World!です。 +のため主にRを使ている人でもPythonも使ってみるこをお勧めします。
-<code> +
-print("Hello, World!"+
-</code>+
  
 === Rのコアチームの開発方針は堅い === === Rのコアチームの開発方針は堅い ===
  
-R言語はS言語の方言です。開発に当たって、頑固な後方互換性を原則としています。仕様の変更はほとんど行われません。そのため、何年も前に書いたコードは、今でも問題なく動きます。+R言語はS言語の方言です。開発に当たって、頑固な後方互換性を原則としています。仕様の変更は滅多に行われません。そのため、何年も前に書いたコードは、今でも問題なく動きます。
  
 === Rの拡張はサードパーティが担う === === Rの拡張はサードパーティが担う ===
  
-仕様の拡張はサードパーティにより、適宜行われています。機能の拡張もサードパーティにより、とても頻繁に幅広く行われています。+仕様の拡張はサードパーティにより、適宜行われています。機能の拡張もサードパーティにより、とても頻繁に幅広く行われています。Rの開発にかかわるサードパーティの多くは、様々な分野の研究者であり、Rの発展は彼らからの社会貢献と捉えることもできます。
  
 === RはGUIを持つ === === RはGUIを持つ ===
  
 WindowsとmacOS用に提供されているRのバイナリアプリケーションは、簡易なGUIを持ちます。 WindowsとmacOS用に提供されているRのバイナリアプリケーションは、簡易なGUIを持ちます。
 +Tcl/Tkを同梱しているので、Tkを用いたGUIの構築も可能です。
 Linux用のソフトウェアとしてのRは、コンソール用のソフトウェアです。 Linux用のソフトウェアとしてのRは、コンソール用のソフトウェアです。
  
行 35: 行 55:
  
 R用のIDEは[[https://www.rstudio.com/|RStudio社]]から無償で提供されています。 R用のIDEは[[https://www.rstudio.com/|RStudio社]]から無償で提供されています。
 +
 +[[https://rkward.kde.org/|RKWord]]はQtベースのIDEです。
 +
 +[[https://www.eclipse.org/|Eclipse]]もRに対応しています。
 +
 +[[https://jupyter.org/|Jupyter]]もRをサポートしています。
 +
 +
 +=== R用のエディタ ===
 +
 +Emacsを使う人は、ESSが必須でしょう。
 +
 +