97  導入

library(tidyverse)

それでは、ロジカル型の動作や特徴を少し細かくみていきましょうまず、ロジカル型は

TRUE
[1] TRUE
FALSE
[1] FALSE
str(TRUE)
 logi TRUE
str(FALSE)
 logi FALSE

TRUE FALSEと書くことでRにとっては特に指定したり関数で変換したりすることが必要なく、ロジカル型として認識されています。

短縮して、

T
[1] TRUE
F
[1] FALSE

と書くこともできます。逆に、TやFに何か値を代入するのは厳禁です。

このTRUE,FALSE,型変換をしてみると、

as.numeric(TRUE)
[1] 1
as.character(TRUE)
[1] "TRUE"

こんな感じでas.numericで変換するとTRUEは1as.characterで変換するとTRUEは”TRUE”になります。

この動作、因子型をおもいだしませんか?

v <- as.factor(c("dog","cat","dog"))
as.numeric(v)
[1] 2 1 2
as.character(v)
[1] "dog" "cat" "dog"

ただ、因子型と違うのは、

v + v
Warning in Ops.factor(v, v): '+' not meaningful for factors
[1] NA NA NA

はエラーが起こりますが、

c(TRUE, TRUE, FALSE) + c(FALSE, TRUE, TRUE)
[1] 1 2 1

Logical型はこのように計算ができてしまいます。

TRUE + TRUE
[1] 2
TRUE + FALSE
[1] 1
FALSE + FALSE
[1] 0

ということでTRUEの正体は「1」で、FALSEの正体は「0」になります

Logical型への変換は、

as.logical("FALSE")
[1] FALSE
as.logical("TRUE")
[1] TRUE
as.logical(0)
[1] FALSE
as.logical(1)
[1] TRUE

でそれぞれFALSE、TRUEに変換できます。

尚、

as.logical("dog")
[1] NA
as.logical(0.1)
[1] TRUE
as.logical(2)
[1] TRUE
as.logical(-5)
[1] TRUE
as.logical(-3.2)
[1] TRUE

文字列型の場合はTRUEやFALSE以外のものをロジカル型に変換しようとすると欠損、NA、が返されますが、数字を与えると、0以外がすべてTRUEと帰ってくるので「プログラム」を描く場合に注意しておく必要があります。