今更ながらではあるけれども、R言語に着手を始めたので、記録を取っていこうと思う。新しく覚えていくのはちょいと苦痛ではあるものの、何かしら分析を行う上で非常に良いらしく、また数学は比較的得意なので、使ってみることにします。

R言語ってそもそも何なのか?

ぶっちゃけ、なんだっていいじゃんって思って始めるわけですけど、ひとまずR言語ってなんぞ?ってところを調べて見ました。

調べてみると、以下のような記載でした。

統計の機能が盛りだくさんのスクリプト言語です。
似ている言語は?と聞かれるとPythonと答えています。

[出典元]  プログラマーのためのR言語入門 - Qiita

ですって。ふーん。

つまり、統計関係の機能がいっぱいあるスクリプト言語なので、統計を行う時に便利なものですってことらしいです。了解。統計を使うことがそのうち増えそうなので、ひとまずチャレンジして見ます。

まずはR言語を実行するプログラムをインストールしてみる

R言語を実行するためのプログラムをインストールして見ます。これは非常に簡単ですぐに終わります。

https://cran.rstudio.com/ にプログラムが置いてあるので、各環境に合わせてダウンロードのあと、インストールを実行します。

私はmacなので、macでインストールしてみました。何か途中でインストールできないので、何でかな?と思ったらOSのバージョンのせいだったので、OSをアップデートしてからインストールしました。

インストールが終わったら起動します。

最後の行の>の部分にコマンドを入れて、色々動かすことができるようです。linuxのコマンドと同じで対話型なんですね。

ベクトルを作成してみる

ベクトルとか、また懐かしい単語が出てきました。学生の時にn次元ベクトル空間がどうのこうのっていうあれですね。四則演算的なことができる配列ということで理解しておけば、なんとかなる気がします。

ひとまず、作法の基本から試してみます。

#1行、5列の行列に左から数値を入れてみる
>test1<-c(1,2,3,4,5) >test1
[1] 1 2 3 4 5
#[1]というのは1行目の意味

ちょっと、PHPと作法が違いますね。代入は「=」ではなくて、「<-」を使います。プログラムを始めたての頃は、なんで代入が「=」なんだ?と思っていましたが、慣れは恐ろしいもので、何の抵抗もなく「=」を使うようになりました。R言語の方が明らかに直感的な作法ですよね。

次は連番を入れて見ます。これは…Excelでも同様の作法があったような…。オフィスソフトはあまり使わないので覚えてませんが…。

#7から1までの連番を入れてみるを
>test2<-c(7:1) 
>test2
[1] 7 6 5 4 3 2 1

うん、そのままですね。「:」というのは、AからBまでを連番にして入れろってことなのでしょう。了解しました。
ならば、連番ではなくて繰り返しはどうなるんだ?って話になりますので、次は繰り返しを試してみます。

#7を5回入れてみる
>test3<-c(rep(7,5)) 
>test3
[1] 7 7 7 7 7

うん、確かに5回入りましたね。次はちょっとトリッキーな書式にしてみます。特定のベクトルに対し、特定の回数を表示して見ます。

#7を3回、5を4回入れてみる
>test4<-rep(c(7,5),c(3,4)) 
>test4
[1] 7 7 7 5 5 5 5

このあたりになると、少しわかりづらくなりますね。rep(A,B)というのは、AをB回繰り返しという意味なんですけど、AとBがベクトルである場合、対応する数値で実行されます。上記の例でいくと、7に対応してるのは3、5に対応するのは4なので、7が3回出力され、そのあとは5を4回出力するような動きになります。

ん?もし対応する数値がなかったらどうするのか?って疑問が出ますよね?早速試してみます。

#最初のベクトルの数字を1つ増やして、リピート回数のところの数字の数をそのままにしてみる
>test5<-rep(c(7,5,3),c(3,4)) 
rep(c(7, 5, 3), c(3, 4)) でエラー:  'times' 引数が不正です 

不正だそうです。まぁそうでしょうね。実際に実行できないですから。条件が足りず。ちゃんとエラーになりました。

ちなみに、これまでは数字だったんですけど、文字列でも同様のことができます。文字列は、従来のプログラムのとおり、”で囲んで実行します。

#あ、い、うを入れてみる
>test6<-c("あ","い","う")
>test6
[1] "あ" "い" "う"

#あ、い、うをそれぞれ1回、2回、3回入れる
>test7<-rep(c("あ","い","う"),c(1,2,3))
>test7
[1] "あ" "い" "い" "う" "う" "う"

数値の時と同じようにtest7に入れられていましたね。

ひとまず、ベクトルの作成の基本、触りからやって見ました。まとめると…。

c()
ベクトルの作成を行う。他のプログラムと同じで容姿は,(カンマ)で区切る。文字列は”で囲む

:
特定の数字から特定の数字まで連番を作成する

rep()
たぶんrepeatの略で繰り返しを行う。rep(a,b)でaをb回繰り返す

<-
代入のことで、他の言語に出てくる=と同じ意味

と、こんな感じでした。今回は1行だけでしたが、次回は2行、つまり高校の時に出てきた行例を作成して見ます。

ところで、行列って、マトリックスって言うんですよ。英語で。確か。そう言い換えると、何かよくわからないけど、かっこいいことをしてる気分になりますね。

コメント

R言語でベクトルの作成を行ってみる。|webトピ
hhyykepynp http://www.gt85487pl92c7fa5ywxnuau4j8119e55s.org/
<a href="http://www.gt85487pl92c7fa5ywxnuau4j8119e55s.org/">ahhyykepynp</a>
[url=http://www.gt85487pl92c7fa5ywxnuau4j8119e55s.org/]uhhyykepynp[/url]
R言語でベクトルの作成を行ってみる。|webトピ
[url=http://www.g6s84tdo8oe25sds33tto90s9500ay89s.org/]uosjlydomf[/url]
<a href="http://www.g6s84tdo8oe25sds33tto90s9500ay89s.org/">aosjlydomf</a>
osjlydomf http://www.g6s84tdo8oe25sds33tto90s9500ay89s.org/
R言語でベクトルの作成を行ってみる。|webトピ
[url=http://www.g829whsz69089fub336baqj58tm0ku90s.org/]unzxkgfkgbh[/url]
nzxkgfkgbh http://www.g829whsz69089fub336baqj58tm0ku90s.org/
<a href="http://www.g829whsz69089fub336baqj58tm0ku90s.org/">anzxkgfkgbh</a>
R言語でベクトルの作成を行ってみる。|webトピ
fohimmezn http://www.g546q7t7h038a89pem6izl5qo2l2y42es.org/
[url=http://www.g546q7t7h038a89pem6izl5qo2l2y42es.org/]ufohimmezn[/url]
<a href="http://www.g546q7t7h038a89pem6izl5qo2l2y42es.org/">afohimmezn</a>
R言語でベクトルの作成を行ってみる。|webトピ
<a href="http://www.gm5y568jsrh24z5i1y16jla6p2275vd5s.org/">afcyglvmxjq</a>
[url=http://www.gm5y568jsrh24z5i1y16jla6p2275vd5s.org/]ufcyglvmxjq[/url]
fcyglvmxjq http://www.gm5y568jsrh24z5i1y16jla6p2275vd5s.org/
R言語でベクトルの作成を行ってみる。|webトピ
svxtqryyv http://www.g3399491r13mvman1c6gjhvoh0le8342s.org/
[url=http://www.g3399491r13mvman1c6gjhvoh0le8342s.org/]usvxtqryyv[/url]
<a href="http://www.g3399491r13mvman1c6gjhvoh0le8342s.org/">asvxtqryyv</a>
R言語でベクトルの作成を行ってみる。|webトピ
[url=http://www.gemvoq373fi82719np4029pj7z39j6lds.org/]ubevxjqtbw[/url]
bevxjqtbw http://www.gemvoq373fi82719np4029pj7z39j6lds.org/
<a href="http://www.gemvoq373fi82719np4029pj7z39j6lds.org/">abevxjqtbw</a>
R言語でベクトルの作成を行ってみる。|webトピ
[url=http://www.g86358k280c4bc7jst3r1w12yna1kl4qs.org/]uodchbpkir[/url]
<a href="http://www.g86358k280c4bc7jst3r1w12yna1kl4qs.org/">aodchbpkir</a>
odchbpkir http://www.g86358k280c4bc7jst3r1w12yna1kl4qs.org/
R言語でベクトルの作成を行ってみる。|webトピ
efppsmzlbg http://www.g36u8alv06tids83htq80025kud183i9s.org/
<a href="http://www.g36u8alv06tids83htq80025kud183i9s.org/">aefppsmzlbg</a>
[url=http://www.g36u8alv06tids83htq80025kud183i9s.org/]uefppsmzlbg[/url]
R言語でベクトルの作成を行ってみる。|webトピ
[url=http://www.gl84w690hxs6se7wzjv44j64i0059yx1s.org/]uzoxkpfzfew[/url]
<a href="http://www.gl84w690hxs6se7wzjv44j64i0059yx1s.org/">azoxkpfzfew</a>
zoxkpfzfew http://www.gl84w690hxs6se7wzjv44j64i0059yx1s.org/
1    2    3