library(tidyverse)ベクトルも比較オペレーターでLogicalの形で表せます
vec <- c(1:20)
vec [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
この1から20までの数字で、
vec == 1 [1] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
とすると、vecの中で1が該当する部分がTRUEになり、それ以外はFALSEです。これは、
1 == vec [1] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
逆でもなりたちます。
>なども同じような理屈で、TRUE、FALSEを返してくれます。
vec > 10 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE
[13] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
vec < 5 [1] TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
ということで、比較オペレーターを用いると、ベクトルの長さと同じ長さのロジカルベクトルが返ってきます。
大抵のRコースで最初に学ぶことをここで紹介します。
vec [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
から特定の値を抜き出したい場合には、<ベクトル>[
vec <- c(1:5)
vec[1] 1 2 3 4 5
vec[c(TRUE, TRUE, TRUE, TRUE, TRUE)][1] 1 2 3 4 5
vec[c(TRUE, TRUE, TRUE, TRUE, FALSE)][1] 1 2 3 4
vec[c(TRUE, TRUE, FALSE, TRUE, FALSE)][1] 1 2 4
vec[c(F,T,F,T,F)][1] 2 4
ということは、
vec > 3[1] FALSE FALSE FALSE TRUE TRUE
がロジカルベクトルを返すことを利用してあげれば、
vec[vec > 3][1] 4 5
という感じでベクトルから任意の比較オペレーターを利用した条件でベクトルの要素を取り出すことができます。
この、ベクトル[ロジカルベクトル]は、Rで要素を取り出すときの基本的な書き方になるので、覚えておいていただくと役にたつと思います。(ただ、Tidyverseでデータ処理をする場合はそれほど頻出しません。)
次はロジカルオペレーターと呼ばれるものを紹介します。