Pular para o conteúdo principal

Condicionais e controle de fluxo em R: tutorial

Aprenda sobre operadores relacionais para comparar objetos em R e operadores lógicos para combinar valores booleanos TRUE e FALSE. Você também vai construir instruções condicionais.
Atualizado 17 de set. de 2026  · 13 min lido

Explorar com IA

ChatGPTClaudePerplexity

Diagrama de fluxo de instruções de controle
Controle de fluxo (Fonte: w3schools)

Operadores relacionais

Operadores relacionais, também conhecidos como comparadores, ajudam você a ver como um R-object se relaciona com outro. Por exemplo, é possível verificar se dois objetos são iguais usando o sinal == (igual duplo). Um operador lógico que seja TRUE dos dois lados retorna TRUE, já que TRUE é igual a TRUE, como mostrado abaixo.

TRUE == TRUE
TRUE

Mas, se você tiver TRUE de um lado e FALSE do outro, o resultado lógico será FALSE.

TRUE == FALSE
FALSE

Além de variáveis lógicas, você pode verificar a igualdade de outros tipos.

Vamos comparar strings e números.

100 == 100
TRUE
100 == 200
FALSE
'tutorial' == 'R'
FALSE
  • O oposto do operador de igualdade é o de diferença, dado pelo sinal != (exclamação seguida de igual).

Agora, todas as condições que antes deram FALSE passam a ser TRUE. Veja só:

100 != 200
TRUE
'tutorial' != 'R'
TRUE
TRUE != FALSE
TRUE

Da mesma forma, o operador de diferença também funciona para valores numéricos e outros objetos de R, como matrizes, vetores e listas.

  • E se você quiser verificar, entre dois objetos de R, qual é maior ou menor que o outro? Você pode, usando os sinais < e > (menor que e maior que).

    Primeiro, um exemplo numérico.

2 > 10
FALSE
-200 < 0
TRUE

É autoexplicativo por que 2 não é maior que 10 e por que -200 é menor que 0. Mas e strings ou caracteres? Vamos ver.

Parece que o R prioriza a ordem alfabética para decidir qual string ou caractere é "maior".

No exemplo abaixo, como t vem depois de R na ordem alfabética, t é maior que R.

'tutorial' > 'RRRRRRRRR'
TRUE

É importante notar que, em R e em quase todas as linguagens, TRUE é interpretado como 1 e FALSE como 0. Com isso, TRUE é maior que FALSE.

TRUE > FALSE
TRUE
  • Você também pode verificar se um objeto é maior ou igual (>=) (ou menor ou igual <=) a outro. Para isso, use o sinal de menor/maior combinado com igual. Se uma das duas condições (menor ou igual / maior ou igual) for TRUE, a condição completa será TRUE.
5 >= 5 # 5 não é maior que 5, mas é igual; portanto, retorna TRUE.
TRUE
5 >= 10
FALSE

Você pode aprender sobre tipos de dados em R neste tutorial da DataCamp. Ele mostra que o R lida muito bem com listas, matrizes e vetores.

E os comparadores funcionam com vetores? Vamos descobrir.

Por exemplo, você tem um vetor linha com o número de visualizações do seu último tutorial da DataCamp nos últimos 10 dias. Agora quer saber em quais dias as visualizações foram maiores ou iguais a 100. Você pode usar o operador maior ou igual direto.

datacamp_views <- c(100,20,5,200,60,88,190,33,290,64)
length(datacamp_views)
10
datacamp_views >= 100
  1. TRUE
  2. FALSE
  3. FALSE
  4. TRUE
  5. FALSE
  6. FALSE
  7. TRUE
  8. FALSE
  9. TRUE
  10. FALSE

Como você pode ver, para o primeiro, quarto, sétimo e nono dia, o resultado é TRUE — nesses dias, as visualizações foram maiores ou iguais a 100.

Da mesma forma, você pode comparar dois vetores ou até duas matrizes.

youtube_views <- c(10,20,1000,64,100,9,19,3,90,4)

Assim, você pode criar uma aplicação simples para descobrir quando as visualizações do seu tutorial na DataCamp foram maiores que as do seu vídeo no YouTube (ou vice-versa).

O R compara os vetores elemento a elemento. No resultado abaixo, considerando o primeiro elemento de cada vetor, o de DataCamp tem 100 e o outro tem 10; por isso, retorna TRUE.

datacamp_views > youtube_views
  1. TRUE
  2. FALSE
  3. FALSE
  4. TRUE
  5. FALSE
  6. TRUE
  7. TRUE
  8. TRUE
  9. TRUE
  10. TRUE

Vamos comparar rapidamente duas expressões numéricas. Se você lembra da matemática básica, existe a regra BODMAS (ou PEMDAS), que define a ordem: parênteses, divisão, multiplicação, adição e subtração. A mesma regra vale para resolver as expressões em R abaixo.

-6 * 5 + 2 >= -10 + 1 # do lado esquerdo, faz-se a multiplicação primeiro e depois a adição, seguindo a BODMAS
FALSE

Domine suas habilidades em dados com o DataCamp

Mais de 10 milhões de pessoas aprendem Python, R, SQL e outras habilidades tecnológicas usando nossos cursos práticos elaborados por especialistas do setor.

Comece a Aprender
learner-on-couch@2x.jpg

Comparar matrizes

A capacidade do R de lidar com diferentes estruturas de dados em comparações não para nos vetores. Matrizes e operadores relacionais também funcionam muito bem juntos!

Em vez de vetores (como no exemplo anterior), os dados de DataCamp e YouTube agora estão em uma matriz chamada views. A primeira linha contém as informações da DataCamp; a segunda, do YouTube. Você usará a função matrix do R para criar a matriz a partir dos vetores datacamp e youtube do exemplo anterior.

datacamp_views <- c(100,20,5,200,60,88,190,33,290,64)
youtube_views <- c(10,20,1000,64,100,9,19,3,90,4)
views <- matrix(c(datacamp_views, youtube_views), nrow = 2, byrow = TRUE)
views
Uma matriz: 2 × 10 do tipo dbl
100 20 5 200 60 88 190 33 290 64
10 20 1000 64 100 9 19 3 90 4

Vamos descobrir quando as visualizações, tanto da DataCamp quanto do YouTube, foram iguais a 20.

views == 20
Uma matriz: 2 × 10 do tipo lgl
FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

Ótimo! Agora que você entendeu como os operadores relacionais funcionam, vamos seguir para os operadores lógicos.

Operadores lógicos

O R permite combinar os resultados dos operadores relacionais oferecendo os seguintes operadores lógicos:

  • operador AND ( & )
  • operador OR ( | )
  • operador NOT ( ! )

Vamos ver cada um deles.

  • Operador AND: como em outras linguagens, o AND do R recebe dois valores lógicos e retorna TRUE somente se ambos forem verdadeiros; caso contrário, retorna FALSE.
Tabela-verdade do operador AND
Tabela-verdade do operador AND

Veja alguns exemplos autoexplicativos.
TRUE & TRUE # 1.1 = 1
TRUE
TRUE & FALSE # 1.0 = 0
FALSE
FALSE & FALSE # 0.0 = 0
FALSE
FALSE & TRUE # 0.1 = 0
FALSE

Da mesma forma, em vez de usar valores lógicos diretamente, você pode usar os resultados dos comparadores com esses operadores.

x <- 100
x < 200 & x >= 100  # como x é menor que 200 e maior ou igual a 100, retorna TRUE.
TRUE
x < 200 & x > 100 # isto é FALSE, pois a segunda comparação (x > 100) é falsa.
FALSE
  • Operador OR: o OR é parecido com o AND, mas aqui a expressão OR é TRUE se pelo menos um dos valores lógicos for TRUE.
Tabela-verdade do operador OR
Tabela-verdade do operador OR

Veja alguns exemplos autoexplicativos.
TRUE | TRUE # 1 + 1 = 1
TRUE
TRUE | FALSE # 1 + 0 = 1
TRUE
FALSE | FALSE # 0 + 0 = 0
FALSE
FALSE | TRUE # 0 + 1 = 1
TRUE

Vamos usar o mesmo exemplo numérico de antes, mas agora o resultado deve ser diferente.

x <- 100
x < 200 | x > 100 # é TRUE, pois a primeira comparação (x < 200) é verdadeira.
TRUE
  • Operador NOT: é o mais simples; ele nega o valor lógico ao qual é aplicado — pense nele como o oposto lógico.
Tabela-verdade do operador NOT
Tabela-verdade do operador NOT

Vamos ver alguns exemplos:

a = 1
!a # retorna FALSE, já que o “não a” é 0, que é FALSE.
FALSE
a = 0
!a # semelhante ao acima, retorna TRUE pois a = 0 e “não a” é 1.
TRUE

Veja alguns casos em que o NOT pode ajudar com funções nativas do R.

is.numeric(5) # retorna TRUE, pois 5 é numérico
TRUE
!is.numeric(5) # o “não” disso retorna FALSE
FALSE
is.numeric('aditya')
FALSE

O exemplo abaixo é útil quando você lida com uma mistura de dados numéricos e strings e quer filtrar apenas as strings/caracteres (por exemplo, de uma lista) e manter só os numéricos.

!is.numeric('aditya')
TRUE

Por fim, vamos ver como operadores lógicos funcionam com vetores e matrizes.

a <- c(FALSE, TRUE, FALSE)
b <- c(TRUE, TRUE, FALSE)
a & b # operador AND
  1. FALSE
  2. TRUE
  3. FALSE
a | b # operador OR
  1. TRUE
  2. TRUE
  3. FALSE

Com base nos resultados, fica claro que, assim como com operadores relacionais, os operadores lógicos também operam elemento a elemento em vetores.

Já o operador NOT só pode ser aplicado a um vetor por vez ou ao resultado de duas operações vetoriais.

!a
  1. TRUE
  2. FALSE
  3. TRUE
!b
  1. FALSE
  2. FALSE
  3. TRUE

No exemplo abaixo, o NOT está fora dos parênteses, ou seja, é aplicado ao resultado de a | b. Esse operador também é conhecido como NOR (Not-OR).

!(a | b) # operador NOR
  1. FALSE
  2. FALSE
  3. TRUE

Antes de passar para as condicionais, um pequeno exercício.

Você tem o mesmo vetor de visualizações do tutorial da DataCamp definido acima. Vamos extrair o último elemento com o método tail do R.

last <- tail(datacamp_views,1)
print (last)
[1] 64

Vamos ver se o último elemento é menor que 100 ou maior que 100.

last < 100 | last > 100
TRUE

Como o último elemento é menor que 100, uma das expressões é satisfeita e o resultado é TRUE.

Vamos ao tópico final deste tutorial: as instruções condicionais!

Instruções condicionais

Até aqui, você aprendeu sobre operadores relacionais (como os objetos em R se comparam) e operadores lógicos (para combinar valores lógicos). O R permite combinar tudo isso e usar o resultado para alterar o comportamento dos seus scripts. Com isso, vamos às instruções if e else.

A sintaxe do if é: if(condição){ // expressão } A instrução if recebe uma condição (entre parênteses), que pode usar operadores relacionais ou lógicos; se essa condição for TRUE, o código entre chaves é executado. Simples, né?

Vamos entender com um exemplo.

Suponha que você tenha a variável x igual a -10. Agora, aplique uma condição que verifica se x é maior que zero e negue-a com NOT. Como a condição é TRUE, o código dentro das chaves será executado.

x <- -10
if (!x > 0){
    print("x is a negative number")
}
[1] "x is a negative number"

Se você remover o NOT, a condição vira FALSE e o código dentro das chaves não será executado.

if (x > 0){
    print("x is a positive number")
}

Agora, vamos ao else com a ajuda da sintaxe: if(condição){ // expressão1 }else{ // expressão2 } Diferente do if, o else não tem condição própria — ele deve ser usado junto com o if. O código do else é executado apenas quando a condição do if não é TRUE.

Vamos usar o mesmo exemplo de if para entender o else.

x <- -10
if (x > 0){
    print("x is a positive number")
}else{
    print("x is a negative number")
}
[1] "x is a negative number"

No exemplo acima, como a condição do if não é válida, o else é executado.

Existe ainda o else if, que fica entre o if e o else. Ele é executado quando a condição do if não é satisfeita. Em resumo, o else tem a última prioridade. if(condição){ // expressão1 }else if(condição){ // expressão2 }else{ // expressão3 }

x <- 0
if (x > 0){
    print("x is a positive number")
}else if (x == 0){
    print("x is zero")
}else{
    print("x is a negative number")
}
[1] "x is zero"

Costumamos usar else if quando as condições não são mutuamente exclusivas — ou seja, podem ocorrer ao mesmo tempo. Veja:

x <- 12
if (x %% 3 == 0){
    print("x is divisible by 3")
}else if (x %% 4 == 0){
    print("x is divisible by 4")
}else{
    print("x is neither divisible by 3 nor by 4")
}
[1] "x is divisible by 3"

No exemplo, a condição do if se torna TRUE, então o R sai da estrutura de controle e não avalia as próximas, mesmo que a de else if também fosse TRUE. Contudo, se você usasse outro if em vez de else if, ele também seria executado.

Conclusão

Parabéns por concluir o tutorial!

Este conteúdo é um ótimo ponto de partida para quem está começando em R. Como exercício, tente usar operadores relacionais e lógicos como condições em instruções condicionais.

Há ainda temas a cobrir em R, como utilitários e aprendizado de máquina em R, que virão em próximos tutoriais. Fique de olho!

Se tiver dúvidas sobre este tutorial, deixe nos comentários abaixo.

Se quiser aprender mais sobre R, faça o curso Intermediate R da DataCamp.

Tópicos
R
Ciência de dados

Saiba mais sobre R

Curso

R intermediário

6 h
676K
Continue sua jornada para se tornar um ninja do R aprendendo sobre instruções condicionais, loops e funções vetoriais.
Ver detalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

Tutorial

Tutorial de Pipes em R para iniciantes

Saiba mais sobre o famoso operador de pipe %>% e outros pipes no R, por que e como você deve usá-los e quais alternativas você pode considerar!
Karlijn Willems's photo

Karlijn Willems

15 min

Tutorial

Instruções IF, ELIF e ELSE em Python

Neste tutorial, você vai aprender só sobre as instruções if else do Python.
Sejal Jaiswal's photo

Sejal Jaiswal

9 min

multiple linear regression

Tutorial

Regressão linear múltipla no R: Tutorial com exemplos

Uma visão geral completa para entender as regressões lineares múltiplas no R por meio de exemplos.
Zoumana Keita 's photo

Zoumana Keita

12 min

Tutorial

Tutorial de regressão linear no R

Neste tutorial, você aprenderá os fundamentos de um modelo estatístico muito popular: a regressão linear.

Eladio Montero Porras

15 min

Tutorial

Testes T no tutorial do R: Saiba como realizar testes T

Determine se há uma diferença significativa entre as médias dos dois grupos usando t.test() no R.
Abid Ali Awan's photo

Abid Ali Awan

10 min

Tutorial

Criação de uma lista no R

Pratique Listas em R usando o material do curso Intro to R do DataCamp.
Ryan Sheehy's photo

Ryan Sheehy

3 min

Ver MaisVer Mais