# 二種類の代入と c() 関数
= 4.2
a <- 5.0
b c(a, b)
[1] 4.2 5.0
=
か <-
(ALT+-) です。伝統的に使われる代入は <-
ですが、私は =
を使っています。# 二種類の代入と c() 関数
= 4.2
a <- 5.0
b c(a, b)
[1] 4.2 5.0
c()
は渡された引数を結合します。#
の後から続く文字列はコードとして実行されません。実行されない文書はコメントと呼びます。+ b) * c(a, b) (a
[1] 38.64 46.00
RStudio の場合 <-
は ALT + -
のショートカットを定義しています。
整数 integer
実数 double, numeric
複素数 complex number
時系列 time-series (POSIX)
文字列 character
論理値 logical
因子 factor
ベクトル vector
配列 array, matrix
リスト list
テーブル(データフレーム) dataframe
ベクトル
= c(10.3, 20.2, 30.1)
a = c("rabbit", "cat", "mouse", "dog")
b = c(TRUE, FALSE, T)
d = factor(c("nagasaki", "kagoshima", "fukuoka")) e
リスト
ベクトルの長さは異なってもいい。 ここでは、リストの要素名を指定しました。
= list("A" = a, "B"= b, "D" = d, "E" = e) z1
データフレーム
ベクトルの長さを揃える必要がある。 ここではb[1:3]
をb
に渡すことで、変数名を指定しました。
= data.frame(a, b = b[1:3], d, e) z2
Rオブジェクトの構造 (structure) は str()
で確認します。
str(z1)
List of 4
$ A: num [1:3] 10.3 20.2 30.1
$ B: chr [1:4] "rabbit" "cat" "mouse" "dog"
$ D: logi [1:3] TRUE FALSE TRUE
$ E: Factor w/ 3 levels "fukuoka","kagoshima",..: 3 2 1
リストの要素は次のように抽出できます。
$A z1
[1] 10.3 20.2 30.1
リストからの抽出方法は $
以外に, [
や [[
でもできます。
c("A", "D")]
z1[c(1,4)]
z1[2]]
z1[[c(2,3)]]
z1[[2]][c(1,2)] z1[[
str(z2)
'data.frame': 3 obs. of 4 variables:
$ a: num 10.3 20.2 30.1
$ b: chr "rabbit" "cat" "mouse"
$ d: logi TRUE FALSE TRUE
$ e: Factor w/ 3 levels "fukuoka","kagoshima",..: 3 2 1
リストと似ていますが、そもそもデータフレームはリストです。 つまり、リストと同じように操作できます。
$a z2
[1] 10.3 20.2 30.1
c("a", "d")]
z2[c(1, 4)]
z2[2]]
z2[[c(2,3)]]
z2[[2]][c(1,2)] z2[[
&
(論理積 AND), |
(論理和 OR), !
(否定 NOT)= c(5, 3, 2)
A = c(5, 2, 1)
B
# 論理積
1] > B[1]) & (A[1] == B[1]) (A[
[1] FALSE
# 論理和
1] > B[1]) | (A[1] == B[1]) (A[
[1] TRUE
# 否定と論理積
!(A[1] > B[1]) & (A[1] == B[1])
[1] TRUE
# 否定と論理和
1] < B[2]) | !(A[1] == B[1]) (A[
[1] FALSE
= c(10.3, 20.2, 30.1)
a = c("rabbit", "cat", "mouse")
b = c(TRUE, FALSE, T)
d = factor(c("nagasaki",
e "kagoshima",
"fukuoka"))
= data.frame(a, b, d, e)
Z $a > 20, ] Z[Z
a b d e
2 20.2 cat FALSE kagoshima
3 30.1 mouse TRUE fukuoka
$a > 10 & Z$a < 20.2, ] Z[Z
a b d e
1 10.3 rabbit TRUE nagasaki
$a > 10 & Z$a <= 20.2, ] Z[Z
a b d e
1 10.3 rabbit TRUE nagasaki
2 20.2 cat FALSE kagoshima
identical(Z$a, 20) | !Z$d, ] Z[
a b d e
2 20.2 cat FALSE kagoshima
重要! 数値の比較について
パソコンは 2 進数で計算しているので、数値は正確ではない!
たとえば:
0.2 * 0.2 / 0.2 == 0.2 # = と =
[1] FALSE
数値の比較をする場合は all.equal()
を使いましょう。
# 上のコードと同じ
all.equal(0.2 * 0.2 / 0.2, 0.2, tolerance = 0)
[1] "Mean relative difference: 1.387779e-16"
# 機械誤差を考慮した比較
all.equal(0.2 * 0.2 / 0.2, 0.2, tolerance = .Machine$double.eps)
[1] TRUE
<
, >
, >=
(>
と =
), <=
(<
と =
), !=
(!
と =
), ==
(=
と =
) です。