差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
r:introduction [2020/03/08 22:26] – [Rはインタプリタ] watalu | r:introduction [2020/03/08 23:15] (現在) – [RよりPythonの方がかっこいいかもしれません] watalu | ||
---|---|---|---|
行 1: | 行 1: | ||
==== R言語とは ==== | ==== R言語とは ==== | ||
- | === Rはデータサイエンス用ソフトウェア === | ||
- | |||
- | Rは[[https:// | ||
- | |||
- | === RはPythonよりも古くはない === | ||
- | |||
- | Rが古く、Pythonが新しい、という雰囲気を醸し出す人がいます。しかし開発開始から数えれば、[[https:// | ||
- | |||
- | RとPythonは、開発目的と利用目的が共に異なります。Rは "R is a free software environment for statistical computing and graphics." | ||
- | |||
- | 片方でしかできないことはあまり多くはありませんが、片方でやった方がよいことは多いです。どちらが良いか、という議論は不毛です。目的に合わせて、適切なプログラミング言語や環境を選択すれば良いのです。たとえば深層学習を試してみたいなら、Pythonを選択するのがよいでしょう。それでもTensorFlow、PyTorch、Kerasなど、どれを試すかを悩むことになります。TensorFlowやKerasはRからも呼び出せます。多くの機械学習の手法は、まずRからリリースされます。競争相手がRでリリースされているためかもしれません。深層学習とそれらを比較するには、PythonとRの双方を使う必要があります。scikit-learnの開発チームはよい仕事をしてくれていますが、手法の進化と普及は常に同じ速度では進みません。 | ||
=== Rはインタプリタ === | === Rはインタプリタ === | ||
行 22: | 行 11: | ||
Rのコードにはmain関数やメインルーチンがありません。 | Rのコードにはmain関数やメインルーチンがありません。 | ||
インタプリタとしてのソフトウェアRにコードを読ませれば、即座に実行されていきます。 | インタプリタとしてのソフトウェアRにコードを読ませれば、即座に実行されていきます。 | ||
+ | |||
+ | Rコンパイラの要望があった時代もありましたが、現在ではインタプリタ=遅いという印象も払拭され、多くの言語は、その実装方針のまま受け入れられるようになっています。 | ||
+ | |||
+ | === Rでできること === | ||
+ | |||
+ | 統計学に基づくデータの分析やシミュレーションは、およそすべてRで実行できます。 | ||
+ | 機械学習の手法の多くも、Rで実行できます。 | ||
+ | |||
+ | === Rが苦手なこと === | ||
+ | |||
+ | 並列分散処理、特に大規模なものは、控えめに言えば得意でない、中立的に発言すると苦手、積極的に発言すると、かなり困難です。 | ||
+ | |||
+ | === Rはデータサイエンス用ソフトウェア === | ||
+ | |||
+ | Rは[[https:// | ||
+ | |||
+ | === RはPythonよりも古くはない === | ||
+ | |||
+ | Rが古く、Pythonが新しい、という雰囲気の話を耳にすることがあります。しかし開発開始から数えれば、[[https:// | ||
+ | |||
+ | === RよりPythonの方がかっこいいかもしれません === | ||
+ | |||
+ | Matplotlibを始めに、Pythonの幾つかのサードパーティが提供するライブラリやモジュールのグラフ描画機能は、センスがよく、商業レベルに近い緻密さを持ちます。 | ||
+ | 例えばWordCloudは、今ではRでも描くことが可能ですが、もともとはPython発でした。 | ||
+ | Rのグラフ描画機能も柔軟ではありますが、Pythonが醸し出す格好よさには追いつけていません。 | ||
+ | そのため主にRを使っている人でも、Pythonも使ってみることをお勧めします。 | ||
=== Rのコアチームの開発方針は堅い === | === Rのコアチームの開発方針は堅い === | ||
- | R言語はS言語の方言です。開発に当たって、頑固な後方互換性を原則としています。仕様の変更はほとんど行われません。そのため、何年も前に書いたコードは、今でも問題なく動きます。 | + | R言語はS言語の方言です。開発に当たって、頑固な後方互換性を原則としています。仕様の変更は滅多に行われません。そのため、何年も前に書いたコードは、今でも問題なく動きます。 |
=== Rの拡張はサードパーティが担う === | === Rの拡張はサードパーティが担う === | ||
- | 仕様の拡張はサードパーティにより、適宜行われています。機能の拡張もサードパーティにより、とても頻繁に幅広く行われています。 | + | 仕様の拡張はサードパーティにより、適宜行われています。機能の拡張もサードパーティにより、とても頻繁に幅広く行われています。Rの開発にかかわるサードパーティの多くは、様々な分野の研究者であり、Rの発展は彼らからの社会貢献と捉えることもできます。 |
=== RはGUIを持つ === | === RはGUIを持つ === | ||
WindowsとmacOS用に提供されているRのバイナリアプリケーションは、簡易なGUIを持ちます。 | WindowsとmacOS用に提供されているRのバイナリアプリケーションは、簡易なGUIを持ちます。 | ||
+ | Tcl/ | ||
Linux用のソフトウェアとしてのRは、コンソール用のソフトウェアです。 | Linux用のソフトウェアとしてのRは、コンソール用のソフトウェアです。 | ||
行 39: | 行 55: | ||
R用のIDEは[[https:// | R用のIDEは[[https:// | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | |||
+ | === R用のエディタ === | ||
+ | |||
+ | Emacsを使う人は、ESSが必須でしょう。 | ||
+ | |||
+ |