R Language
算術演算子
サーチ…
備考
Rのほぼすべての演算子が実際に関数です。たとえば、 +
はfunction (e1, e2) .Primitive("+")
として定義されたfunction (e1, e2) .Primitive("+")
ここで、e1は演算子の左辺、e2は演算子の右辺です。これは、ユーザ定義関数で基底の+
をマスキングすることによって、直観に反する効果を達成することが可能であることを意味する。
例えば:
`+` <- function(e1, e2) {e1-e2}
> 3+10
[1] -7
範囲と加算
範囲に値を追加する例を考えてみましょう(たとえば、ループ内で行うことができます)。
3+1:5
与える:
[1] 4 5 6 7 8
範囲演算子がいるためです:
加算演算子よりも高い優先順位がある+
。
評価中に何が起こるかは次のとおりです。
-
3+1:5
-
3+c(1, 2, 3, 4, 5)
レンジ演算子を展開して整数のベクトルを作る。 -
c(4, 5, 6, 7, 8)
4,5,6,7,8c(4, 5, 6, 7, 8)
ベクターの各メンバーへの3の付加。
このような動作を避けるためには、Rインタプリタに、次のように( )
使って操作を順序付けする方法を伝える必要があります。
(3+1):5
Rは範囲を拡大する前にカッコ内にあるものを計算し、次のようになります。
[1] 4 5
足し算と引き算
基本的な数学演算は、主に数またはベクトル(数のリスト)で実行されます。
1.単一数字の使用
加算するには+
で連結した数を 、 -
を引くには、
> 3 + 4.5
# [1] 7.5
> 3 + 4.5 + 2
# [1] 9.5
> 3 + 4.5 + 2 - 3.8
# [1] 5.7
> 3 + NA
#[1] NA
> NA + NA
#[1] NA
> NA - NA
#[1] NA
> NaN - NA
#[1] NaN
> NaN + NA
#[1] NaN
変数 (この場合は定数)に数値を代入して同じ操作を行うことができます:
> a <- 3; B <- 4.5; cc <- 2; Dd <- 3.8 ;na<-NA;nan<-NaN
> a + B
# [1] 7.5
> a + B + cc
# [1] 9.5
> a + B + cc - Dd
# [1] 5.7
> B-nan
#[1] NaN
> a+na-na
#[1] NA
> a + na
#[1] NA
> B-nan
#[1] NaN
> a+na-na
#[1] NA
2.ベクトルの使用
この場合、数のベクトルを作成し、それらのベクトル、または単一の数の組み合わせを使用して演算を行います。この場合、操作はベクトルの各要素を考慮して行われます。
> A <- c(3, 4.5, 2, -3.8);
> A
# [1] 3.0 4.5 2.0 -3.8
> A + 2 # Adding a number
# [1] 5.0 6.5 4.0 -1.8
> 8 - A # number less vector
# [1] 5.0 3.5 6.0 11.8
> n <- length(A) #number of elements of vector A
> n
# [1] 4
> A[-n] + A[n] # Add the last element to the same vector without the last element
# [1] -0.8 0.7 -1.8
> A[1:2] + 3 # vector with the first two elements plus a number
# [1] 6.0 7.5
> A[1:2] - A[3:4] # vector with the first two elements less the vector with elements 3 and 4
# [1] 1.0 8.3
関数sum
を使用して、ベクトルのすべての要素を追加することもできます。
> sum(A)
# [1] 5.7
> sum(-A)
# [1] -5.7
> sum(A[-n]) + A[n]
# [1] 5.7
ベクトルの長さが異なる数学演算を行うときに起こるR
の特徴の1つであるリサイクルに注意する必要があります。 式のより短いベクトルは、最も長いベクトルの長さと一致するまで、必要に応じて(おそらく部分的に)再利用されます。特に、定数は単純に繰り返されます。この場合、警告が表示されます。
> B <- c(3, 5, -3, 2.7, 1.8)
> B
# [1] 3.0 5.0 -3.0 2.7 1.8
> A
# [1] 3.0 4.5 2.0 -3.8
> A + B # the first element of A is repeated
# [1] 6.0 9.5 -1.0 -1.1 4.8
Warning message:
In A + B : longer object length is not a multiple of shorter object length
> B - A # the first element of A is repeated
# [1] 0.0 0.5 -5.0 6.5 -1.2
Warning message:
In B - A : longer object length is not a multiple of shorter object length
この場合、正しい手続きは、短い方のベクトルの要素だけを考慮することです。
> B[1:n] + A
# [1] 6.0 9.5 -1.0 -1.1
> B[1:n] - A
# [1] 0.0 0.5 -5.0 6.5
sum
関数を使用すると、関数内のすべての要素が再び追加されます。
> sum(A, B)
# [1] 15.2
> sum(A, -B)
# [1] -3.8
> sum(A)+sum(B)
# [1] 15.2
> sum(A)-sum(B)
# [1] -3.8