English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
この章ではR言語の簡単な演算を紹介します。
一般的な言語の代入演算は = シンボル、しかしR言語は数学の言語であり、従って代入演算子は数学の教科書の仮コードと非常に似ており、左向きの<アローグラフです- :
a <- 123 b <- 456 print(a + b)
以下のコードの実行結果:
[1] 579
この代入演算子はR言語の形式上の利点と操作上の欠点です:形式上は数学者に適していますが、すべての数学者は使用に慣れていません = 代入演算子として使用されます。
操作において、<シンボルと - シンボルはすべて簡単に打ち込めないキャラクターであり、これにより多くのプログラマーが不適応します。したがって、R言語の比較的新しいバージョンでは = を代入演算子としてサポートしています:
a = 123 b = 456 print(a + b)
これは合法なRのプログラムです。
注意:Rのどのバージョンからサポートされたかは難しいです = 代入演算ですが、このチュートリアルで使用するRのバージョンでは 4.0.0。
以下の表に主要な数学演算子とその演算順序が示されています:
優先順位 | 記号 | 意味 |
---|---|---|
1 | () | 括弧 |
2 | ^ | 乗方演算 |
3 | %% | 整数除法の余り |
%/% | 整数除法 | |
4 | * | 乗法 |
/ | 除法 | |
5 | + | 加法 |
- | 減法 |
以下の例は、シンプルな数学演算を示しています:
> 1 + 2 * 3 [1] 7 > (1 + 2) * 3 [1] 9 > 3 / 4 [1] 0.75 > 3.4 - 1.2 [1] 2.2 > 1 - 4 * 0.5^3 [1] 0.5 > 8 / 3 %% 2 [1] 8 > 8 / 4 %% 2 [1Inf > 3 %% 2^2 [1] 3 > 10 / 3 %/% 2 [1] 10
以下の表は、R言語がサポートする関係演算子を示しており、関係演算子は2つのベクトルを比較し、第1ベクトルの各要素と第2ベクトルの各要素を比較し、結果として布尔値を返します。
演算子 | 説明 |
---|---|
> | 第1ベクトルの各要素が第2ベクトルの対応する要素より大きいかどうかを判断します。 |
< | 第1ベクトルの各要素が第2ベクトルの対応する要素より小さいかどうかを判断します。 |
== | 第1ベクトルの各要素が第2ベクトルの対応する要素と同じかどうかを判断します。 |
!= | 第1ベクトルの各要素が第2ベクトルの対応する要素と異なるかどうかを判断します。 |
>= | 第1ベクトルの各要素が第2ベクトルの対応する要素より大きいかどうかを判断します。 |
<= | 第1ベクトルの各要素が第2ベクトルの対応する要素より小さいかどうかを判断します。 |
v <- c(2,4,6,9) t <- c(1,4,7,9) print(v>t) print(v < t) print(v == t) print(v!=t) print(v>=t) print(v<=t)
以上のコードを実行すると、出力結果が:
[1TRUE FALSE FALSE FALSE [1FALSE FALSE TRUE FALSE [1FALSE TRUE FALSE TRUE [1TRUE FALSE TRUE FALSE [1] TRUE TRUE FALSE TRUE [1FALSE TRUE TRUE TRUE
以下の表は、R言語がサポートする論理演算子を示しており、数字、論理、複素数のベクトルに使用できます。
より大きい 1 の数字がすべてTRUEです。
論理演算子は2つのベクトルを比較し、第1ベクトルの各要素と第2ベクトルの各要素を比較し、結果として布尔値を返します。
演算子 | 説明 |
---|---|
& | 要素論理与演算子は、第1ベクトルの各要素を第2ベクトルの対応する要素と組み合わせます。2つの要素がすべてTRUEの場合、結果がTRUE、それ以外の場合FALSEとなります。 |
| | 要素論理或演算子は、第1ベクトルの各要素を第2ベクトルの対応する要素と組み合わせます。2つの要素のうち1つがTRUEの場合、結果がTRUE、2つがFALSEの場合FALSEを返します。 |
! | 論理否定演算子は、ベクトルの各要素の逆の論理値を返します。要素がTRUEの場合FALSEを、要素がFALSEの場合TRUEを返します。 |
&& | 論理演算子は、2つのベクトルの第1要素のみを判断し、2つの要素がすべてTRUEの場合、結果がTRUE、それ以外の場合FALSEとなります。 |
|| | 論理和演算子、2つのベクトルの最初の要素に対してのみ判断を行い、2つの要素のうち1つがTRUEの場合TRUE、どちらもFALSEの場合FALSEを返します。 |
v <- c(3,1,TRUE,2+3i) t <- c(4,1,FALSE,2+3i) print(v&t) print(v|t) print(!v) # &&、||は最初の要素に対してのみ比較します v <- c(3,0,TRUE,2+2i) t <- c(1,3,TRUE,2+3i) print(v&&t) v <- c(0,0,TRUE,2+2i) t <- c(0,3,TRUE,2+3i) print(v||t)
以上のコードを実行すると、出力結果が:
[1] TRUE TRUE FALSE TRUE [1] TRUE TRUE TRUE TRUE [1] FALSE FALSE FALSE FALSE [1] TRUE [1] FALSE
R言語の変数は左辺値、右辺値または等号演算子を使用して代入できます。
以下の表にR言語がサポートする代入演算子が示されています。
演算子 | 説明 |
---|---|
<− = <<− | 左辺値代入。 |
−> −>> | 右辺値代入。 |
# 左辺値代入 v1 <- c(3,1,TRUE,"w3codebox") v2 <<- c(3,1,TRUE,"w3codebox") v3 = c(3,1,TRUE,"w3codebox") print(v1) print(v2) print(v3) # 右辺値代入 c(3,1,TRUE,"w3codebox") -> v1 c(3,1,TRUE,"w3codebox") ->> v2 print(v1) print(v2)
以上のコードを実行すると、出力結果が:
[1] "3" "1" "TRUE" "w3codebox" [1] "3" "1" "TRUE" "w3codebox" [1] "3" "1" "TRUE" "w3codebox" [1] "3" "1" "TRUE" "w3codebox" [1] "3" "1" "TRUE" "w3codebox"
R言語には特別な演算子がいくつか含まれています。
演算子 | 説明 |
---|---|
: | コロン演算子、一連の数字のベクトルを作成するために使用されます。 |
%in% | 要素がベクトルに含まれているかどうかを判定し、ブール値を返します。含まれている場合TRUE、含まれていない場合FALSEを返します。 |
%*% | 行列とその転置行列を乗算するために使用されます。 |
# 1 から 10 のベクトル v <- 1:10 print(v) # 数字がベクトル v に含まれているかどうかを判定 v1 <- 3 v2 <- 15 print(v1 %in% v) print(v2 %in% v) # 行列とその転置行列を乗算 M = matrix( c(2,6,5,1,10,4), nrow = 2,ncol = 3,byrow = TRUE) t = M %*% t(M) print(t)
以上のコードを実行すると、出力結果が:
[1] 1 2 3 4 5 6 7 8 9 10 [1] TRUE [1] FALSE [,1] [,2] [1,] 65 82 [2,] 82 117
一般的に数学関数に対してよく用いられる:
関数 | 説明 |
---|---|
sqrt(n) | nの平方根 |
exp(n) | 自然対数eのn乗、 |
log(m,n) | mの対数関数、nの何乗がmに等しいかを返します |
log10(m) | 相当于log(m,10) |
以下示例演示了数学函数的应用:
> sqrt(4) [1] 2 > exp(1) [1] 2.718282 > exp(2) [1] 7.389056 > log(2,4) [1] 0.5 > log10(10000) [1] 4
取整関数:
名前 | パラメータモデル | 意味 |
---|---|---|
round | (n) | nを四捨五入します |
(n, m) | nに対してm桁まで四捨五入します | |
ceiling | (n) | nに対して小数点以下を切り上げます |
floor | (n) | nに対して小数点以下を切り捨てます |
)
> round(1.5) [1] 2 > round(2.5) [1] 2 > round(3.5) [1] 4 > round(4.5) [1] 4
注意:Rのround関数は場合によっては「5を切り捨てる」ことがあります。
整数部分が偶数の場合、5は切り捨てられます。これはC言語とは異なります。
Rの三角関数はラジアンで指定されます:
> sin(pi/6) [1] 0.5 > cos(pi/4) [1] 0.7071068 > tan(pi/3) [1] 1.732051
逆三角関数:
> asin(0.5) [1] 0.5235988 > acos(0.7071068) [1] 0.7853981 > atan(1.732051) [1] 1.047198
確率論と統計学を学んだことがあれば、以下の確率分布関数は比較的馴染みがあるでしょう。なぜなら、R 言語は数学者向けに設計されているため、頻繁に使用されます:
> dnorm(0) [1] 0.3989423 > pnorm(0) [1] 0.5 > qnorm(0.95) [1] 1.644854 > rnorm(3, 5, 2) # 生成 3 の平均値が 5、標準偏差が 2 の正規分布のランダム数 [1] 4.177589 6.413927 4.206032
これら4つはすべて正規分布を計算するために使用されます。名前はすべて norm で終わりますが、これは「正規分布」を意味します。
分布関数の名前の接頭辞は以下の4種類があります:
d - 確率密度関数
p - 確率密度積分関数(無限小から x までの積分)
q - 分位数関数
r - ランダム数関数(通常は確率シミュレーションに使用されます)
注:このチュートリアルは数学の専門理論を説明するものではないため、確率分布に関する数学の理論は詳細に説明しておりません。R 言語は正規分布の関数に加えて、ポアソン分布(pois、Poisson)などの一般的な分布関数を含んでいます。詳細を学びたい場合は、「確率論と数理統計」を学ぶことができます。