R言語プログラミングの基礎【現役エンジニアがわかりやすく解説】

PROGRAM

R言語プログラミングの基礎を知りたい方に。

この記事を読まれている方は、

  • R言語のプログラミングがどんなものか知りたい
  • R言語の簡単な書き方が知りたい
  • R言語が使われる場面を知りたい

おそらくこのように考えている方が多いと思います。

この記事を書いている私は、
プログラミング未経験から転職を果たした現役のWeb系エンジニアです。
エンジニア歴は3年ですが、本業とは別にフリーランスの副業で月10万円ほど、多いときで20万円ほどの収入があります。

この記事では、現役のエンジニアが、R言語プログラミングの基礎を解説しています。

プログラミング言語のR言語の特徴

プログラミング言語のR言語の特徴

R言語はオープンソースの統計解析向けのプログラミング言語のひとつで、動的型付けのスクリプト言語で、オブジェクト指向型言語です。

動的型付けの言語とは、簡単に言うと、データを文字列型や数値型、論理型などに分ける必要がない言語のことです。

スクリプト言語とは、プログラム実行前にコンパイルという、書いたプログラム文を中間言語に変換する作業の必要がない言語のことで、書いた後はすぐにプログラムを実行することができる言語のことです。

一方、スクリプト言語と対をなすコンパイル言語とは、プログラムの実行前に、開発者の方でコンパイラーを使って構文チェックなどをしたうえで中間言語に変換しないと動作しない言語のことです。

一般に、スクリプト言語は、処理速度がコンパイル言語に比べて遅くなります。速度が求められる処理では、コンパイル言語が使用されることが多いです。

オブジェクト指向型言語とは、オブジェクトという概念を持つ言語のことで、簡単に言うと、データ構造として、配列や構造体に加えて、オブジェクト(クラス)があるということです。
オブジェクトのおかげで、ソースコードのメンテナンスがしやすかったり、機能の流用ができます。

R言語は他の言語とは一線を画しており、統計解析をターゲットにしたプログラミング言語となっています。開発当初は学術や研究のために使われていた言語ですが、最近では企業においてもデータ分析や統計解析の分野で使われるようになりました。

また、機械学習に関しても、世間ではPython一択のような雰囲気がありますが、R言語においても機械学習系の拡張機能が豊富に提供されています。

IDEは、RStudioというものがあり、こちらもオープンソースのため無料で使うことができます。多くのエンジニアはR言語の開発ではRStudioを使っています。

R言語は動的型付けのスクリプト言語のため、コーディングは比較的しやすい言語となります。
ただし、日本語のサンプルがあまりないため、初心者には習得しづらい言語とも言えます。

PythonとR言語で比較すると、Pythonの方が学習難易度は低いと思います。Pythonも他の言語と比べるとインデントでブロックを分けている点などが特殊ですが、R言語はR言語で、雰囲気が少し他の言語と違うので、初心者には吸収しづらいと思います。

R言語の用途

R言語の用途

R言語はデータ分析や統計解析の目的で使われ、機械学習系のライブラリも充実しているため、Pythonに並ぶ機械学習向けの言語ともなっています。

逆に汎用言語ではないため、上記の目的以外ではあまり使えない言語でもあります。
コーディングは比較的しやすいものの、他の言語とは性質が異なるので、初心者にとっても少し難しく感じるところがあるかもしれません。

データ分析や統計解析などの分野を狙い打ちして学習するのではない限りは、積極的にはオススメしない言語です。

R言語の書き方

R言語の書き方

ここでは簡単に書き方を少しだけ紹介します。実際に始める気になったら、ぜひ参考書などの教材を参考にして、試してみて下さい。

Hello World!を画面に出力する

まずはお決まりのHello World!という文字列を画面に出力する方法から。

cat("Hello World!")

これで出力することができます。
C言語やJavaなどと同じように、main関数を書く必要はありません。

スクリプト言語のため、プログラムを書いて保存すればすぐに実行できます。

変数宣言と分岐処理

次は少し踏み込んで、変数宣言と分岐処理をしてみます。

age = 19
    
if(age<20){
    cat("未成年")
} else {
    cat("成人")
}

上記の例では、まずageという数値型の変数を作り、その中に19という数値を入れています。
次にageが20未満であれば”未成年”という文字列を、それ以外であれば”成人”という文字列を出力するような分岐処理をしています。

配列と繰返処理

続いて、配列の使い方と繰返処理について、解説します。

ここでは配列を作って、以下のようにデータを出力することにしましょう。

佐藤,田中,小林

これを出力するコードは以下です。

students<-list("佐藤","田中","小林")

for (i in 1:length(students)) {
    cat(students[[i]])
    if (i<length(students)) {cat(",")}
}

上記の例では、まず文字列型のリストstudentsに「佐藤」「田中」「小林」の3つの文字列を格納しています。
その後、数値型のカウンタ変数iを0に初期セットし、リストstudentsの要素の数に到達するまでループでiを1ずつ増やしてまわしていきます。その際に、cat関数を使い、リストstudentsのi番目の要素の値を出力し、最後の要素以外、その後に「,(カンマ)」を出力しています。

構造体の取り扱い

最後に構造体の取り扱い方法について解説します。

ここではエクセルのようなデータを作って、以下のようにデータを出力することにしましょう。

名前:佐藤,性別:男性
名前:田中,性別:女性
名前:小林,性別:女性

これを出力するコードは以下です。

first_row<-list(A="佐藤",B="男性")
second_row<-list(A="田中",B="女性")
third_row<-list(A="小林", B="女性")
excel_data<-list(first_row,second_row,third_row)

for (i in 1:length(excel_data)) {
    cat(excel_data[[i]][["A"]])
    cat(",")
    cat(excel_data[[i]][["B"]])
    cat("\n")
}

上記の例では、まずfirst_row, second_row, third_rowという、キー・値がともに文字列型のリストを3つ作り、Aというキー(列)に名前を、Bのキーに性別の値を入れていきます。
そして、それら全てをexcel_dataというリストに入れていきます。
その後、数値型のカウンタ変数iを0に初期セットし、リストexcel_dataの要素の数に到達するまでループでiを1ずつ増やしてまわしていきます。その際に、cat関数を使い、リストexcel_dataのi番目の要素の中のA列とB列の値を出力しています。

まとめ:R言語はデータ分析や統計解析、機械学習に強い言語

まとめ:R言語はデータ分析や統計解析、機械学習に強い言語

R言語の良さを簡単にまとめると、以下のとおりです。

  • 簡単に動く← 動的型付けのスクリプト言語
  • データ分析に強い ← データ分析や統計解析向けの言語
  • 機械学習も強い ← 機械学習系のライブラリが充実

つまりR言語は、動的型付けのスクリプト言語のため、簡単に動かすことができ、さらにデータ分析や統計解析、機械学習に強い言語となっています。

最近は機械学習の時代なので、Pythonと同じくらいR言語も注目を浴びています。また、データ分析などの分野においても民間企業で需要の高い言語です。大手企業でもよく募集は見かけますが、まだあまりこの分野のスペシャリストがいない雰囲気があります。

R言語は比較的書きやすいとは思いますがやや特殊で、日本語のサンプルも少ないため、独学は難しいという方もいるかもしれません。もし独学でできなさそうな方は、プログラミングスクールも手段の一つに入れると良いと思います。