Rの基礎1
Youtubeを見る
Rの基礎1は,Youtubeに解説動画がアップされています(静岡大学情報学部 「データ処理演習」用)。
初学者の方は動画を見ながら一緒に手を動かしてみましょう。
コンソール
ソースコードを直接打ち込んで実行させる箇所をコンソールという(コマンドウィンドウともよばれる)。
プログラムでは,関数や変数には半角文字を使用しなければならない。全角文字(ひらがなや漢字)を使うとエラーが出てしまう。
しかし,「R」では変数名に全角文字を使用できるところが他のプログラミング言語と異なる点である。ただし,プログラミングに慣れないうちは常に「半角英数モード」で打ち込んだほうがミスが少なく,無難である。
Ctrl + L : コンソールをクリア
↑(上矢印キー):コンソールに打ち込んだ履歴を表示し,再利用することができる
#:コメントアウト,#以降に何を書いても,その行は実行されない。メモに使う
この解説でも「具体例」以降に #が先頭についているものがありますが,コメントです。プログラム実行自体には関係ないので,コピペしなくてもOK。
四則演算をしてみよう
コンソールに以下のコマンドを使用して適当な四則演算をおこなってみよう。
数式には括弧()が使用可能。
+ 足し算,- 引き算,* 掛け算, / 割り算
^ 累乗,%/% 整数商,%% 剰余
変数・要素
ひとつの数値とか文字を要素と呼ぶ
ある名前をつけたデータ(入れ物)のことを変数と呼ぶ
ほかの言語では,変数の宣言という作業が必要になったりするが,Rでは必ずしも必要ない
「<-」矢印(<と-の組み合わせ)で,左の変数に右の要素を代入する
文字列の要素を指定するときには「"」ダブルクオーテーションで囲む
日本語キーボードだと 「Shift + 2」で「"」を打ち込める(「2」はテンキーじゃなくて「W」の上にあるやつ)
"Hello," ← みたいな感じに囲むと Hello, が文字列として認識される
関数(あとで説明)は文字列だけど,ダブルクオーテーションで囲まない
数字をダブルクオーテーションで囲むと,文字列として扱われることにも注意
具体例
a <- 1
b <- "Hello,"
c <- "World"
d <- getwd()
e <- 150
# 変数同士で計算が可能
a+e
# 文字列は足せない
b+c
# 文字列は足せないが,くっつけることはできる
# sep=""とすることで,くっついたときの空白をなくす(あるいは特定の文字・記号を指定することも可能)
paste(b,c)
paste(b,c, sep="")
# 変数は上書きすることができる
b <- a+e
c <- a+b
# 半角スペースは入れても入れなくてもいいが,入れて式が分かりやすくなる場合には入れたほうがいい
a=20+5*e
a = 20 + 5*e
# 半角スペースであれば,いくつ入力しようと無視される(全角スペースはエラー出る)
a = 20 + 5*e
# 半角スペースを文字列として扱うこともできる
f = " "
#「;」セミコロンを行末につけると,その行のコードは実行されるが,結果は表示されない
# 上のコードを使って確認してみよう
# プログラムをするときには,計算結果を必ず表示して確かめよう!
# 一度変数を保存していたら,その変数を入力することで何度でも結果を呼び出せる
# Environmentのタブに現在保存されている変数とその中身が表示されている
a
b
ベクトル・行列・配列(1次元,2次元,n次元データ)
データが一列に並んだものをベクトルとよぶ
データが 2 次元に並んだものを行列とよぶ
データが 3 次元以上になったものを配列とよぶ
ベクトルは1次元配列,行列は2次元配列と考えることができる
R のベクトル・行列・配列は,論理値(TRUE/FALSE)や文字列などを要素とすることも可能
ベクトル・行列・配列を作るコード(関数)
関数とは,ある機能をもったコマンドのこと(後で説明)
関数の名前のすぐ後に括弧()を入力
括弧の中にさらに何らかの要素を入力する
c():ベクトルの作成
matrix(): 行列を作成
array(): 配列を作成
t(): 転置する(行と列を入れ替える)
具体例
# aという変数に,1から6まで1ずつ増えるベクトルを格納する
a <- c(1,2,3,4,5,6)
a <- 1:6
# 1ずつ減らすこともできる
a <- 6:-6
# ベクトルの長さが一致していれば,対応する要素同士の四則演算ができる
b <- 1:13
a+b
a/b
# ベクトルをつなぐこともできる
c(a,b)
# ベクトルと,1つの数値であれば,ベクトルのすべての要素との四則演算ができる
a-2
b*5
# すべての要素が1で,2行 4列の行列を作成
matrix(1, nrow = 2, ncol = 4)
matrix(1,2,4)
# 1:8の要素が含まれる,2行 4列の行列を作成
# 1:8のベクトルを2行 4列の行列に変換している
matrix(1:8,2,4)
matrix(1:8,2,4, byrow = FALSE)
matrix(1:8,2,4, byrow = TRUE)
# 1:2の要素を繰り返す,2行 4列の行列を作成
matrix(1:2, 2,4)
# 1:8の要素が含まれる,2行 4列の配列を作成
# 1:8のベクトルを2行 4列の配列に変換,2番目の引数が記述の仕方異なることに注意
# 2次元配列
array(1:8, c(2,4))
array(1:8, dim = c(2,4))
# 3次元配列
array(1:8, dim = c(2,2,2))
関数・引数
関数(function≒機能)
関数とは,ある入力をしたら,それに対応する出力を返すものを指す
これは数学における関数と一緒。それが数式ではなくて,プログラミング言語になっただけ
あるXを入力すると,それに対応したYが出力される
すでに上で紹介した c() や matrix() も関数の一種
プログラミングにおいては,ある入力に応じて特定の機能を実行してくれるコードと考えておけばいい
ちなみに「機能」という言葉も,「ある入力に応じてある出力を返すもの」の総称であるが,特に「異なる入力があると異なる出力を返す」場合を想定した用語である
引数(argument≒主張)
通常,特定の文字列(関数名=コマンド名)に続く()の中に,決められた形で引数(ひきすう)を入力する
引数とは,入力する値のことを指す
c(1:5) という場合には,1:5が引数と呼ばれる
引数が必要ない関数もあるが,実行時には括弧は付けなければならない: e.g., getwd()
ある関数に対して,「こういう具合に処理して!」って主張するための値だと考えるとわかりやすい
ちなみに「主張」というのは,「異なる人/場合で異なる可能性があるもの」である
作業ディレクトリ
作業ディレクトリとは
ファイルを読み込んだり,書き込んだり(保存したり)する際の基準となるディレクトリのこと
ディレクトリ=フォルダ
Windowsだと「エクスプローラー」,Macだと「ファインダー」というアプリケーションでディレクトリに含まれる内容を閲覧可能
作業ディレクトリの変更
# GUIで操作(慣れないうちはこっちが楽)
Rだと,「ファイル」→「ディレクトリの変更」で変更可能
RStudioだと,「Session」→「Set working directory」→「Choose directory」
# コマンドで操作(慣れたらこっちのほうが楽,スクリプトに保存しておけばよい)
setwd("/****/")
setwd("c:/usr") # 作業ディレクトリを変更する
getwd() # 現在の作業ディレクトリを確認する
GUIによる作業ディレクトリの変更