基本的な操作、関数、データ構造の簡単なGNU Rチュートリアル
前書き
最後の2つの記事では、LinuxオペレーティングシステムにGNU R をインストールして実行する方法を学びました。この記事の目的は、Rプログラミング言語の主要なオブジェクトの概要を含む、GNU Rのクイックリファレンスチュートリアルを提供することです。Rの基本的な操作、関数、変数について学びます。さらに、Rデータ構造、オブジェクト、クラスを紹介します。
Rの基本操作
簡単な数学的例から始めましょう。たとえば、Rコンソールに7と3を追加してEnterキーを押すと、結果として次のようになります。
> 7+3
[1] 10
ちょうど何が起こったかをより詳細に説明し、Rを実行するときに我々が使用する用語は何であるために、私たちはと言うRインタプリタが印刷されたオブジェクトによって返された表現に入力されたRコンソールを。また、Rは任意の数をベクトルとして解釈することにも言及する必要があります。したがって、結果の近くの「[1]」は、指定された行に表示される最初の値のインデックスが1であることを意味します。これは、c()関数を使用してより長いベクトルを定義することにより、さらに明確にすることができます。例えば:
>c(1:100)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
[37] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
[55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
[73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
[91] 91 92 93 94 95 96 97 98 99 100
ベクトルに対して操作を実行することもできます。たとえば、次のように2つのベクトルを追加できます。
> c(1,5,67,0)+c(0,1.5,6.7,3)
[1] 1.0 6.5 73.7 3.0
これは、これら2つのベクトルの対応する要素を追加することを意味することに注意してください。ベクトルが同じサイズでない場合、短いベクトルが複数回繰り返され、長いオブジェクトの長さが短いオブジェクトの長さの倍数でない場合、警告メッセージが生成されます。
> c(1,5,8,9)+c(0, 1.4)
[1] 1.0 6.4 8.0 10.4
> c(1,5,8,9)+c(0, 1.4,7)
[1] 1.0 6.4 15.0 9.0
Warning message:
In c(1, 5, 8, 9) + c(0, 1.4, 7) :
longer object length is not a multiple of shorter object length
さらに、Rの文字ベクトルを次のように定義できます。
> c("linuxcareer.com", "R tutorial")
[1] "linuxcareer.com" "R tutorial"
最後に、Rコードにコメントを付けるには、「#」を使用します。特に、
> # This is a comment in R code
関数と変数
Rで事前定義された関数を定義または使用することもできます。Rのほとんどの関数は次の形式で作成されます
f(argument1, argument2,...)
ここで、「f」は関数の名前、「argument1、argument2、...」は関数への引数のリストです。たとえば、次の事前定義された関数を使用して、
> sin(pi/2)
[1] 1
> log(3)
[1] 1.098612
上記の例とは対照的に、Rの一部の関数は、加算、累乗、等値などの演算子の形式になっています。たとえば、等値演算子はブールデータ型の結果(FALSE / TRUE)を生成します。
> 4==4
[1] TRUE
他のプログラミング言語と同様に、Rは変数を使用します。たとえば、代入演算子は "<-"(または "=")です。
> x<-c(1,4,7)
> x+x
[1] 2 8 14
これで、ベクトル「x」の3番目の値を次のように参照できます。
> x[3]
[1] 7
または、7未満のメンバーのみをフェッチします。
> x[x<7]
[1] 1 4
たとえば、アイテム1と3を次のようにフェッチすることもできます。
> x[c(1,3)]
[1] 1 7
最後に、Rで関数を定義するには、それに応じて名前を付け、Rでのビルド関数と同様に、この名前で呼び出すことができます。例えば:
> myfunction<-function(x,y){x+y}
> myfunction(4,5)
[1] 9
特定の関数に対応するコードを表示したい場合は、関数の名前を次のように入力します。
> myfunction
function(x,y){x+y}
データ構造
データ構造の最初の例として、多次元ベクトルである行列(配列)を定義する方法を示します。
たとえば、次のように明示的に配列を定義できます
> a<-array(c(1:24),dim=c(6,4))
> a
[,1] [,2] [,3] [,4]
[1,] 1 7 13 19
[2,] 2 8 14 20
[3,] 3 9 15 21
[4,] 4 10 16 22
[5,] 5 11 17 23
[6,] 6 12 18 24
または、最初にベクトルを作成し、matrix()関数を使用することもできます。
v<-c(1:24)
> m<-matrix(data=v,nrow=6,ncol=4)
> m
[,1] [,2] [,3] [,4]
[1,] 1 7 13 19
[2,] 2 8 14 20
[3,] 3 9 15 21
[4,] 4 10 16 22
[5,] 5 11 17 23
[6,] 6 12 18 24
2次元配列を次のように定義することもできます。
> w<-array(v,dim=c(3,2,4))
> w
, , 1
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
, , 2
[,1] [,2]
[1,] 7 10
[2,] 8 11
[3,] 9 12
, , 3
[,1] [,2]
[1,] 13 16
[2,] 14 17
[3,] 15 18
, , 4
[,1] [,2]
[1,] 19 22
[2,] 20 23
[3,] 21 24
配列の一部の値を参照するのも簡単です。たとえば、
> w[1,1,1]
[1] 1
> w[1:2,1:2,1]
[,1] [,2]
[1,] 1 4
[2,] 2 5
インデックスを省略することにより、次のような特定の次元のすべての要素を取得します。
> w[,1,1]
[1] 1 2 3
次に、複数の基本的なデータ型を持つ、より複雑なデータ構造を見てみましょう。これらのデータ型はリストと呼ばれます。Rのリストには、さまざまなデータ型のオブジェクトのさまざまな選択を含めることができます。リストの各コンポーネントに名前を付けることができるため、後でそのコンポーネントを名前または場所で参照できます。例えば、
> l<-list(name="linuxcareer.com",visitors="10,000")
> l
$name
[1] "linuxcareer.com"
$visitors
[1] "10,000"
以下に示すように、リストのコンポーネントを名前または場所で参照できるようになりました
> l$visitors
[1] "10,000"
> l[1]
$name
[1] "linuxcareer.com"
> l[[1]]
[1] "linuxcareer.com"
データフレームは、同じ長さの複数の名前付きのベクトルを含むリストです。これはデータベースに似た構造です。いくつかの為替レート(他の通貨/ USD)を含むデータフレームを作成します。
> currency<-c("Kroner", "Canadian $", "Hong Kong $", "Rupees")
> date_090812<-c(6.0611,0.9923,7.7556,55.17)
> date_100812<-c(6.0514,0.9917,7.7569,55.18)
> exchangerate<-data.frame(currency,date_090812,date_100812)
> exchangerate
currency date_090812 date_100812
1 Kroner 6.0611 6.0514
2 Canadian $ 0.9923 0.9917
3 Hong Kong $ 7.7556 7.7569
4 Rupees 55.1700 55.1800
データフレームの特定の要素をその名前で参照できるようになりました。たとえば、090812に香港ドル/米ドルの為替レートを指定する必要がある場合があります。これは次の方法で実現できます。
>exchangerate$date_090812[exchangerate$currency=="Hong Kong $"]
[1] 7.7556
オブジェクトとクラス
Rはオブジェクト指向プログラミング言語です。これは、Rのすべてのオブジェクトが型を持ち、クラスのメンバーであることを意味します。特定のオブジェクトのクラスを識別するには、次の例のように関数class()を使用します。
> class(exchangerate)
[1] "data.frame"
> class(myfunction)
[1] "function"
> class(1.07)
[1] "numeric"
Rでは、他のオブジェクト指向プログラミング言語のように、すべての関数が特定のクラスに関連付けられているわけではありません。ただし、特定のクラスと密接に関連している関数がいくつかあります。これらはメソッドと呼ばれます。Rでは、総称関数と呼ばれるメソッドは、異なるクラスに対して同じ名前を共有します。これにより、そのような汎用関数を異なるタイプのオブジェクトに適用できます。たとえば、「-」はオブジェクトを減算するための一般的な関数です。以下のように、数値を減算できますが、日付から数値を減算することもできます。
> 4-2
[1] 2
> as.Date("2012-09-08")-2
[1] "2012-09-06"
結論
この基本的なRチュートリアルの目的は、これまでRを使用したことがない初心者にRプログラミング言語を紹介することでした。このチュートリアルは、R統計ソフトウェアのより高度なアプリケーションを学ぶ人のためのリファレンスチュートリアルとしても役立ちます。次の記事では、Rを使用して統計モデルを定義し、基本的な統計分析を実行する方法について説明します。これは、Rソフトウェアのグラフィカルな可能性の図解と組み合わされます。
GNU Rチュートリアルシリーズ:
パートI:GNU R入門チュートリアル:
- LinuxオペレーティングシステムでのGNU Rの概要
- LinuxオペレーティングシステムでのGNU Rの実行
- 基本的な操作、関数、データ構造の簡単なGNU Rチュートリアル
- 統計モデルとグラフィックスの簡単なGNU Rチュートリアル
- GNU Rでパッケージをインストールして使用する方法
- GNU Rでの基本パッケージの構築
パートII:GNU R言語: