こんにちは。産婦人科医のtommyです。(Twitter:@obgyntommy)
本記事では基本的なRの文法と四則演算について解説します。
対象としては全くRに触れたことのない方に向けになります。
非常に簡単な四則演算の内容になりますが、RStudioを用意して実際に手を動かしてみてください。
RStudioを手軽にセットアップするにはRStudio Cloudが便利です。詳しい内容は以下を参照してください。
R Studio Cloudの使い方
続きを見る
R Studio Cloud で学習される方はこちらを参照してください。
また、RStudio Cloudではなくても、Rのインストール方法やRStudioの使い方については以下の記事を参照してください。
Rのインストールの方法とRStudioの使い方
続きを見る
では早速みていきましょう。
Rの代入演算子について
Rには代入演算子として <-
と =
があります。
代入演算子について本項目の内容ついて見ていきましょう。
本項目の内容
- 代入演算子として
<-
の使い方 - 代入演算子として
=
の使い方
では早速みていきましょう。
代入演算子 <- の使い方
変数に値を代入するとき、Rでは少し見慣れない代入演算子を使います。それが
です。<-
In[]
1 2 3 | x <- 10 x |
Out[]
1 | [1] 10 |
<-
はキーボード上だと打ちにくいので、RStudioではショートカットを有効活用してください。
<-
を挿入するショートカットはWindowsでは "Alt" + " - "
、MacOSでは "Option" + " - "
です。
コラム
このような一見変わった代入演算子を使うのはRの古い歴史と関係しているようです。
RはAT&Tベル研究所が開発したS言語をもとに作られており、このS言語で使われていた矢印の代入演算子をそのまま受け継いだようです。
また以前はアンダースコア( _
)も代入演算子としてRでは使われていた様ですが、すでに廃止されています。
またこの矢印の代入演算子は逆向きでも使えたのですが、いまでは使えません。
代入演算子 = の使い方
他のプログラミング言語でよく使われる代入演算子のイコール( =
)は、Rでも同じように使えます。
In[]
1 2 3 | y = 4 y |
Out[]
1 | [1] 4 |
ただしAdvanced Rによると、あまりオススメの使い方ではないようです。
なぜならまだRのユーザーの間では矢印の演算子が一般的で、イコールを使うことで混乱を招くためです。
なるべく <-
を使うことに慣れておく方が良いかと思います。
四則演算
この項目では四則演算についてみていきます。
本項目の内容:四則演算の基本
- 足し算、引き算、掛け算、割り算
- 累乗
- 整数商
- 剰余
- 平方根
- 絶対値
- 自然対数 e
- log
- celling 関数
- floor 関数
- roud 関数【四捨五入】
では早速、見ていきましょう。
足し算、引き算、掛け算、割り算
それでは基本的な四則演算について見ていきます。
足し算
In[]
1 | 2 + 3 |
Out[]
1 | [1] 5 |
引き算
In[]
1 | 10 - 8 |
Out[]
1 | [1] 2 |
掛け算
In[]
1 | 3 * 4 |
Out[]
1 | [1] 12 |
割り算
In[]
1 | 10 / 2 |
Out[]
1 | [1] 5 |
もちろん、変数を使って四則演算することもできますし、組み合わせも可能です。
In[]
1 2 3 4 5 6 7 8 9 | a <- 4 b <- 8 c <- 2 d <- (a + b) / c d |
Out[]
1 | [1] 6 |
その他基本的な演算子の使い方
この項目ではその他の演算子の使い方にについて見ていきます。
本項目の内容:基本的な演算子の使い方
- 累乗
- 整数商
- 剰余
- 平方根
- 絶対値
- 自然対数 e
- log
- celling 関数
- floor 関数
- roud 関数【四捨五入】
では早速見ていきましょう。
累乗
べき乗は **
か ^
を使います。以下は2の3乗
を計算しています。
In[]
1 | 2 ** 3 |
Out[]
1 | [1] 8 |
以下は2の2分の1乗
です。
In[]
1 | 2^(0.5) |
Out[]
1 | [1] 1.414214 |
整数商
整数商を求めるには、%/%
をつかいます。
In[]
1 | 10 %/% 3 |
Out[]
1 | [1] 3 |
剰余
剰余を求めるには %% を使います。
In[]
1 | 25 %% 4 |
Out[]
1 | [1] 1 |
平方根
平方根を求めるには sqrt
を使います。
In[]
1 | sqrt(2) |
Out[]
1 | [1] 1.414214 |
絶対値
絶対値を求めるには abs
を使います。
In[]
1 | abs(10 - 100) |
Out[]
1 | [1] 90 |
自然対数 e
自然対数の底であるネイピア数を求めるには exp
を使います。試しに $e$ の1乗と、 $e$ の2乗を計算しています。
In[]
1 2 3 | exp(1) exp(2) |
Out[]
1 2 | [1] 2.718282 [1] 7.389056 |
log
自然対数を求めるには $log$ を使います。
In[]
1 2 3 | log(10) log(exp(1)) |
Out[]
1 2 | [1] 2.302585 [1] 1 |
常用対数は log10
この様に記載します。
In[]
1 | log10(100) |
Out[]
1 | [1] 2 |
ceiling 関数
引数以上の最小整数を求めるには ceiling 関数を使います。
In[]
1 | ceiling(1.5) |
Out[]
1 | [1] 2 |
floor 関数
引数以下の最大整数を求めるには floor 関数を使います。
In[]
1 | floor(1.5) |
Out[]
1 | [1] 1 |
round 関数【四捨五入】
四捨五入するには round 関数を使います。
In[]
1 | round(1.5) |
Out[]
1 | [1] 2 |
条件式の使い方
この項目では条件式の使い方
本項目の内容
- 等号系
- 論理系
では早速見ていきましょう。
等号系
等号
等号の条件をチェックするには、 ==
と等号をふたつ重ねます。返される値は TRUE
か FALSE
になります。
In[]
1 2 3 | a <- 10 # aに10を代入 a == 10 # aが10かどうかをチェック |
Out[]
1 | [1] TRUE |
In[]
1 | a == 20 # aが20かどうかをチェック |
Out[]
1 | [1] FALSE |
否定
「〜ではない」ことをチェックする否定等号というものもあります。否定等号は !=
を使います。≠
(ノットイコール)と同じです。
In[]
1 2 3 | a != 20 # aが20ではないかをチェック a != 10 # aが10ではないかをチェック |
Out[]
1 | [1] TRUE |
1 | [1] FALSE |
比較演算子
大きさを比較する等号は >=
(以上)、>
(より大きい)、<=
(以下)、<
(より小さい)です。
1 2 3 4 5 6 7 | a >= 0 # aが0以上かどうかをチェック a > 10 # aが10より大きいかをチェック a <= 20 # aが20以下かどうかをチェック a < 1 # aが1より小さいかをチェック |
論理系
論理系の演算子には大きく分けて AND
と OR
の2種類あります。
ANDには &
と &&
があり, & は演算結果をベクトルとして返し、ベクトル演算時における条件判断などと共によく使われます。
&&
は演算結果をTRUEまたはFALSEで返し、if 文の判断条件などと共に用いられることが多いです。
ORにも同じく | (演算結果をベクトルで返す)と || (演算結果をTRUEかFALSEで返す)があります。
1 2 3 4 5 6 7 8 9 | # c()はベクトルをつくります。詳しくは別の回で説明します # 下に長さが4のベクトルx, yをつくります # それぞれT(TRUE)かF(FALSE)の値を取ります x <- c(T, F, T, F) y <- c(T, F, F, T) |
1 | x & y # &を使うことで、xとyが両方Tの要素をチェックできます |
1 | x | y # |を使うことで、xまたはyがTの要素をチェックできます |
1 | x & !y # xがTで、かつyがTでない要素をチェックします |
1 | x | !y # xがT、もしくはyがTでない要素をチェックします |
xor()
は排他的論理和と呼ばれるものを計算する関数で、双方の値が異なる場合にだけTRUEを返すものです。
下の例では $x$ と $y$ について、最初の2つの要素は両方とも同じであるため FALSE
が、後ろ2つは異なるため TRUE
値が返されています。
1 | xor(x, y) |
1 2 3 4 5 | # 数値を入れても計算できます xor(1, 0) xor(0, 0) |
1 2 3 4 5 6 7 8 9 | && と || を見ていきます a <- 10 b <- 20 c <- 30 |
1 | a > 0 && b > 10 # aが0より大きく、かつbが10より大きいかチェック |
1 | a > 0 && b < 10 # aが0より大きく、かつbが10より小さいかチェック |
1 | a <= 0 || c < 10 # aが0以下、もしくはcが10より小さいかチェック |
%in%
は、要素がベクトルの中に含まれているかをチェックします。
In[]
1 2 3 4 5 | d <- c(1, 2, 3, 4) 1 %in% d 5 %in% d |
e <- list(5, 6, 7, 8)
#list()関数はリストをつくります。詳しくは別の回で説明します
In[]
1 2 3 | 7 %in% e 10 %in% e |
コメントアウトの方法
コードをたくさん書いていると、次第に何を書いているのかわけがわからなくなってくることが良くあります。
コードにコメントを残すのは自分自身のためだけでなく、チームメンバーとプロジェクトを共有するために非常に重要な作業になります。
ドキュメンテーションをしっかりと残す事で、チームで解析作業を行う際などは効率的に仕事や研究が進みますね。
RStudioではハッシュタグ
を使うことで簡単にコメントを残すことができます。#
は灰色のチャンク内で使います。#
In[]
1 2 3 4 5 | len = 12 # リビングの縦の長さ width = 3 # リビングの幅 area <- len * width # リビングの床面積 |
きれいにコメントを残して見やすいノートブックを作りましょう。
今回は以上となります。