Vetores Lógicos
Criação
logicos <- c(TRUE, TRUE, TRUE, FALSE, FALSE, TRUE)
logicos
## [1] TRUE TRUE TRUE FALSE FALSE TRUE
logicos <- c(T, T, T, F, F, T)
logicos
## [1] TRUE TRUE TRUE FALSE FALSE TRUE
Classe e tipo
class(logicos)
## [1] "logical"
typeof(logicos)
## [1] "logical"
Teste
É lógico?
is.logical(logicos)
## [1] TRUE
Conversão
De logical para numeric:
num <- as.numeric(logicos)
num
## [1] 1 1 1 0 0 1
class(num)
## [1] "numeric"
De numeric para logical:
num <- c(0,1,2,3,4,5)
logi <- as.logical(num)
logi
## [1] FALSE TRUE TRUE TRUE TRUE TRUE
class(logi)
## [1] "logical"
De logical para character:
char <- as.character(logicos)
char
## [1] "TRUE" "TRUE" "TRUE" "FALSE" "FALSE" "TRUE"
class(char)
## [1] "character"
De character para lógico (formato lógico):
char <- c("TRUE", "TRUE", "FALSE", "TRUE")
logi <- as.logical(char)
logi
## [1] TRUE TRUE FALSE TRUE
class(logi)
## [1] "logical"
De character para lógico (outros formatos):
char <- c("0", "1", "uva", "pêssego")
logi <- as.logical(char)
logi
## [1] NA NA NA NA
class(logi)
## [1] "logical"
Operações relacionais
salarios_sp <- c(1800, 2350, 3410, 4285, 5188)
salarios_pr <- c(1760, 2350, 3190, 4285, 5095)
salarios_sp é igual a salario_pr?
salarios_sp == salarios_pr
## [1] FALSE TRUE FALSE TRUE FALSE
salarios_sp é diferente de salario_pr?
salarios_sp != salarios_pr
## [1] TRUE FALSE TRUE FALSE TRUE
salarios_sp é maior que salario_pr?
salarios_sp > salarios_pr
## [1] TRUE FALSE TRUE FALSE TRUE
salarios_sp é menor que salario_pr?
salarios_sp < salarios_pr
## [1] FALSE FALSE FALSE FALSE FALSE
salarios_sp é maior ou igual a salario_pr?
salarios_sp >= salarios_pr
## [1] TRUE TRUE TRUE TRUE TRUE
salarios_sp é menor ou igual a salario_pr?
salarios_sp <= salarios_pr
## [1] FALSE TRUE FALSE TRUE FALSE
Operações lógicas
Operador AND
Retorna verdadeiro quando todos os valores de entrada são verdadeiros.
salarios_sp é maior que 2000 e (AND) menor que 4000:
salarios_sp > 2000 & salarios_sp < 4000
## [1] FALSE TRUE TRUE FALSE FALSE
Operador OR
Retorna verdadeiro quando pelo menos um dos valores de entrada é verdadeiro.
salarios_sp é menor que 3000 ou (OR) maior que 4000:
salarios_sp < 3000 | salarios_sp > 4000
## [1] TRUE TRUE FALSE TRUE TRUE
Operador NOT
Inverte o estado lógico.
salarios_sp não (NOT) é menor que 3000:
!salarios_sp < 3000
## [1] FALSE FALSE TRUE TRUE TRUE