R: Sintaxe básica do R
Última atualização: 2026-08-26
Na aula anterior, instalamos o R e o RStudio e executamos nossa primeira linha de código
cat("Hello"). Nesta aula, vamos dominar completamente os “quatro elementos básicos da sintaxe” do R — comentários, variáveis, atribuições e saída. Isso servirá de base para as próximas 28 aulas.
A sintaxe do R difere um pouco da de outras linguagens: os comentários usam # em vez de //, as atribuições geralmente usam <- em vez de = e a concatenação de strings usa paste() em vez de +. Compreender essas quatro diferenças já é metade do caminho andado na hora de escrever código em R.
1. O que você vai aprender
- Como escrever comentários de uma linha e de várias linhas no R
- Convenções de nomenclatura e melhores práticas para variáveis
- As diferenças entre os quatro operadores de atribuição (
<-=-><<-) - Diferenças entre as funções de saída
print()ecat() - O conceito de diretório de trabalho e o uso de projetos do RStudio
RscriptExecutando scripts R a partir da linha de comando
2. Comentários: como adicionar “comentários” ao código
Comentários são texto destinado a leitores humanos; o interpretador do R os ignora completamente. No entanto, os comentários não são meras “decorações” — eles são a ferramenta de comunicação mais importante do programador.
(1) Por que os comentários são importantes?
Imagine dar uma olhada no código que você escreveu daqui a seis meses:
# Code without comments:
x <- df %>% filter(age > 18) %>% mutate(group = ifelse(score >= 60, "pass", "fail"))
# Code with Comments:
# Filter 18 Adults aged 18 and older,and by score 60 Classified as "Approved"/Failed both groups
x <- df %>% filter(age > 18) %>% mutate(group = ifelse(score >= 60, "pass", "fail"))
O último é facilmente compreensível, enquanto o primeiro leva 5 minutos para ser entendido. Esse é o valor dos comentários.
(2) Sintaxe dos comentários em R
R Apenas comentários de uma linha (usando #), sem comentários em bloco /* */:
| Sintaxe | Compatível | Descrição |
|---|---|---|
# This is a comment |
✅ | Comentário de linha única — o único método compatível com o R |
/* Multi-line */ |
❌ | R não é compatível; será exibido um erro de sintaxe |
// Single line |
❌ | R Não é compatível; retornará object '//' not found |
(3) Como faço para lidar com comentários de várias linhas?
O R não possui comentários de várias linhas nativamente, mas há duas soluções alternativas:
# Plan 1: Use this on every line # (Recommendations, Standard Practice)
# Line 1 Comments
# Line 2 Comments
# Line 3 Comments
x <- 10
# Plan 2:RStudio Keyboard Shortcuts(Most Commonly Used)
# Select multiple lines of code → Ctrl+Shift+C (macOS: Cmd+Shift+C)
# RStudio Automatically add to each line #,Click again to remove the comment
3. Variáveis e convenções de nomenclatura
Variáveis são “recipientes” usados para armazenar dados. O R é uma linguagem de tipagem dinâmica, portanto, não é necessário declarar os tipos antecipadamente; basta atribuir valores às variáveis.
(1) Convenções de nomenclatura (Devem ser seguidas; caso contrário, ocorrerá um erro)
| Regra | Exemplo incorreto | Exemplo correto | Motivo |
|---|---|---|---|
| Deve conter apenas letras, números, sublinhados e pontos | 2age <- 25 ❌ |
age2 <- 25 ✅ |
Não pode começar com um número |
| Não pode conter espaços | my name ❌ |
my_name ✅ |
Os espaços são separadores sintáticos em R |
| A palavra-chave R não pode ser usada | if <- 1 ❌ |
is_if <- 1 ✅ |
if é uma palavra-chave de fluxo de controle |
| Diferenciação entre maiúsculas e minúsculas | Name e name são duas variáveis diferentes |
name (uso consistente de maiúsculas) |
O R diferencia entre maiúsculas e minúsculas |
Name, name e NAME são três variáveis completamente diferentes.
(2) Convenções de nomenclatura (recomendadas)
Existem duas convenções de nomenclatura predominantes na comunidade R; escolha uma e siga-a:
| Estilo | Exemplo | Casos de uso |
|---|---|---|
| snake_case (traços de sublinhado) | user_name, total_count |
estilo tidyverse (recomendado) |
| dot.case | user.name, total.count |
R básico no estilo antigo |
Este tutorial utiliza consistentemente o snake_case (em consonância com o estilo de pacotes modernos do R, como o dplyr e o ggplot2).
(3) Variáveis de visualização
# Assignment
x <- 10
y <- 20
# View a Single Variable
x
# [1] 10
# View All Variables(Equivalent to Environment Pane)
ls()
# [1] "x" "y"
ls().
4. Operador de atribuição: <- vs =
O R possui dois operadores de atribuição de nível superior; eles são quase equivalentes em termos de função, mas <- é recomendado.
(1) Comparação entre os dois estilos de redação
| Dimensão | <- |
= |
|---|---|---|
| Atribuição de nível superior | ✅ | ✅ |
| Criação de variáveis locais dentro de uma função | ✅ | ❌ (Elas são passadas para o escopo externo) |
| Passagem de argumentos em chamadas de função | ❌ (Cria uma variável com o mesmo nome) | ✅ |
| Convenções da comunidade | ✅ Recomendado oficialmente pela R | ❌ Propenso a causar confusão |
| Legibilidade | ✅ A ideia de “atribuir o lado direito ao lado esquerdo” está claramente implícita | ⚠️ Risco de confusão com o símbolo matemático de “igual” |
# Writing Style 1:<- (Recommendations)
x <- 10
# Writing Style 2:= (Available but not recommended)
x = 10
(2) Atribuição reversa -> e atribuição global <<-
O R também possui dois operadores de atribuição “avançados”:
| Símbolo | Finalidade | Nível de recomendação |
|---|---|---|
x <- 10 |
Configuração padrão (da direita para a esquerda) | ✅ Altamente recomendado |
10 -> x |
Atribuição reversa (da esquerda para a direita) | ⚠️ Apenas para fins de identificação ao ler código legado |
x <<- 10 |
Atribuição global (ultrapassa o escopo da função) | ❌ Raramente usada |
<<- e -> são raramente usados. Como iniciante, você só precisa usar <-.
(3) A importância dos espaços: <- vs < -
# Correct: Assignment
x <- 10
# Error: This is "less-than sign" Plus "negative 10" (Comparison x and -10)
x < -10
<- deve estar entre espaços; caso contrário, será interpretado como um operador de comparação. A falta de apenas um espaço pode fazer toda a diferença.
5. Funções de saída: print() x cat()
O R possui duas funções de saída comumente utilizadas, que servem a finalidades diferentes.
(1) Uma tabela que mostra as diferenças de relance
| Características | print() |
cat() |
|---|---|---|
| Aspas em string | Exibir "Alice" |
Não exibir Alice |
| Índice de vetores | Mostrar [1] 1 2 3 |
Ocultar 1 2 3 |
| Concatenação multiparâmetro | ❌ Requer paste() |
✅ Concatenação direta |
| Quebra de linha | Quebra de linha automática | É necessária quebra de linha manual \n |
| Chamada automática | ✅ Ao inserir um objeto diretamente no console | ❌ Deve ser chamado explicitamente |
| Casos de uso | Depuração, monitoramento | Geração de relatórios, texto |
(2) Demonstração ao vivo
name <- "Alice"
age <- 25
# print() -- General Output (with [1] and quotation marks)
print(name)
# [1] "Alice"
# cat() —— Concatenated Output(Recommendations,More flexible)
cat("Name:", name, ",Age:", age, "\n")
# Name: Alice ,Age: 25
(3) Outras funções de saída
| Função | Finalidade | Casos de uso |
|---|---|---|
message() |
Mensagem normal (pode ser suprimida por suppressMessages()) |
Mensagem de progresso para scripts longos |
warning() |
Aviso (não interrompe o programa) | Indica um risco, mas a execução continua |
stop() |
Erro (interrupção do programa) | Erro fatal; deve ser tratado por tryCatch() |
cat() para exibir mensagens de texto e use print() para depurar e visualizar os valores das variáveis.
6. Diretório de trabalho
Quando o R é iniciado, ele entra em um diretório de trabalho por padrão, e todas as operações de leitura e gravação de arquivos ocorrem nesse diretório.
(1) A importância do diretório de trabalho
graph LR
A["R Process"] --> B["Working Directory<br/>(work dir)"]
B --> C["data/sales.csv<br/>(Relative Path = ./data/sales.csv)"]
B --> D["scripts/clean.R<br/>(Relative Path)"]
B --> E["output/report.html<br/>(Relative Path)"]
style A fill:#fff3cd
style B fill:#d4edda
Se o diretório de trabalho estiver incorreto, read_csv("data/sales.csv") não conseguirá localizar o arquivo.
(2) Visualizar e definir o diretório de trabalho
# View the current working directory
getwd()
# [1] "C:/Users/Alice/Documents"
# Set the working directory (Use / or \\, Do not use \)
setwd("C:/Users/Alice/Projects/my_r_project")
(3) Abordagem recomendada: Projeto no RStudio
Fazer isso manualmente setwd() pode gerar erros (podem ocorrer problemas se o caminho contiver caracteres chineses ou espaços). Recomendamos usar um projeto do RStudio:
| Vantagem | Descrição |
|---|---|
| Configurações automáticas | Abra o arquivo .Rproj; o diretório de trabalho é definido automaticamente como o diretório raiz do projeto |
| Independência do projeto | Cada projeto possui seu próprio conjunto de histórico .R, ambiente e pacotes, sem interferência entre eles |
| Portátil | Envie a pasta inteira do projeto para outras pessoas sem conflitos de caminho |
| Compatível com Git | Melhores práticas para integrar projetos do RStudio ao Git |
graph LR
A["File → New Project"] --> B["Select New Directory → New Project"]
B --> C["Enter the project name r-tutorial"]
C --> D["RStudio Create .Rproj Documents"]
D --> E["Open later .Rproj<br/>Automatic Working Directory Setup"]
r-tutorial) e coloque todos os scripts .R nele.
7. Execução na linha de comando: Rscript
Se você quiser executar scripts do R (para automação, tarefas agendadas ou back-ends da web) sem abrir o RStudio, use Rscript.
(1) Criar um script
Crie um novo arquivo chamado hello.R em qualquer local:
# hello.R
cat("Hello, World!\n")
(2) Execução pela linha de comando
Abra o terminal (cmd / PowerShell no Windows, Terminal no macOS / Linux) e execute o seguinte comando:
Rscript hello.R
Resultado esperado:
Hello, World!
Rscript é amplamente utilizado em cenários como CI/CD, pipelines de dados e APIs da Web (R Plumber), e é um comando que todo engenheiro de R deve dominar.
8. Exemplo completo: Exercício abrangente de sintaxe básica
A seguir, apresentamos um exemplo de um fluxo de trabalho completo que reúne todos os conceitos abordados nesta aula.
▶ Exemplo: Script para gerenciamento de informações de alunos
# ============================================
# Student Information Management Script
# File Name:student.R
# ============================================
# 1. Notes:Script Description
# Author:Alice
# Features:Define student information and output it
# Date:2026-07-02
# 2. Variable Assignment (Use <- No need =)
student_name <- "Alice"
student_age <- 20
student_score <- 95.5
is_passed <- TRUE
# 3. Use cat() Output (Recommendations, Flexible Assembly)
cat("=== Student Information ===\n")
cat("Name:", student_name, "\n")
cat("Age:", student_age, "\n")
cat("Score:", student_score, "\n")
cat("Did I pass?:", is_passed, "\n")
# 4. Use print() Debugging (with [1] Index)
print(student_name)
print(student_score)
# 5. Simple Calculations
final_score <- student_score * 0.6 + 100 * 0.4 # 60% End of Term + 40% Usually
cat("\nFinal Results(60% End of Term + 40% Usually):", round(final_score, 2), "\n")
# 6. Delete Variable(Use with caution)
rm(student_name, student_age, student_score, is_passed, final_score)
Resultado esperado:
=== Student Information ===
Name: Alice
Age: 20
Grades: 95.5
Did I pass?: TRUE
[1] "Alice"
[1] 95.5
Final Results(60% End of Term + 40% Usually): 97.3
(1) Procedimento
| Etapa | Ação | Descrição |
|---|---|---|
| 1 | Criar projeto no RStudio r-basics |
File → New Project |
| 2 | Criar student.R no projeto |
Ctrl+Shift+N |
| 3 | Copie o código acima | Cole o código inteiro |
| 4 | Selecionar tudo → Ctrl+Enter |
Enviar para o console |
| 5 | Visualizar a saída no console | Ver 5 linhas de “Informações do aluno” |
❓ Perguntas Frequentes
P: Qual é a diferença entre
x <- 10ex < -10? R: Preste atenção aos espaços!x <- 10é uma atribuição (atribuir 10 a x), enquantox < -10é uma comparação (verificar se x é menor que -10). A falta de um único espaço faz toda a diferença. Adquira o hábito de adicionar espaços antes e depois de<-.
P: Posso usar caracteres chineses nos nomes das variáveis? R: Tecnicamente, sim (o R 4.x suporta nomes de variáveis em UTF-8), mas isso é fortemente desaconselhado. Nomes de variáveis em chinês podem levar a: ① caracteres distorcidos em diferentes plataformas; ② ninguém conseguir encontrar sua pergunta no Stack Overflow; ③ confusão durante a colaboração em equipe. Limite-se ao inglês e ao uso de sublinhados.
P: Qual é a diferença entre
print()e digitar diretamente o nome de uma variável (por exemplo, apenas digitandox)? R: São completamente equivalentes no console — o interpretador do R chama automaticamenteprint()quando encontra uma variável sem parênteses. No entanto, em arquivos de script (.R),xnão produzirá nenhuma saída; você deve usar explicitamenteprint(x)oucat(...).
P: É possível restaurar variáveis excluídas? R: Não,
rm()é irreversível. Para restaurá-las, é necessário reatribuir seus valores. Ao usarrm(list = ls())para limpar o ambiente, recomendamos salvar primeiro as variáveis importantes no arquivo .RData (save.image()).
P: Como faço para escolher entre
paste()ecat()? R:paste()retorna uma string (que pode ser processada posteriormente), enquantocat()exibe diretamente no console (sem valor de retorno). Usepaste()para concatenar em uma nova variável ecat()para saída direta.
📖 Resumo
- No R, use
#para escrever comentários de uma única linha (não existe a sintaxe/* */para comentários em bloco); use o atalho do RStudioCtrl+Shift+Cpara comentar várias linhas de uma só vez - Convenções de nomenclatura de variáveis: caracteres alfanuméricos, sublinhados e pontos; não podem começar com um número; distingue maiúsculas de minúsculas; recomenda-se o estilo
snake_case - O operador de atribuição preferido é
<-(convenção da comunidade R);=é usado ao passar argumentos para funções;<-deve estar entre espaços (para evitar confusão com< -) - Funções de saída:
print()Geral (com índice[1]),cat()Concatenação (recomendada, flexível),message()Mensagem normal,warning()Aviso,stop()Erro - Para visualizar as configurações do diretório de trabalho, use
getwd()/setwd(); Recomendamos enfaticamente o uso de um projeto do RStudio para evitar problemas com caminhos. - Use
Rscript hello.Rpara executar scripts R a partir da linha de comando; adequado para automação, CI/CD e cenários de API da Web
📝 Exercícios
-
Exercício básico: Crie um novo script no RStudio e defina cinco variáveis para armazenar um trecho de texto (
name), sua idade (age), seu peso (weight, número de ponto flutuante), se você é estudante (is_student, booleano) e sua cidade (city). Usecat()para concatená-las na saída: “Meu nome é [name], tenho [age] anos, peso [weight] kg, moro em [city] e [is_student] ainda estou na escola.” Faça uma captura de tela após executar o script e salve-a. -
Exercício Básico: Crie um novo projeto no RStudio chamado
r-basics. Dentro do projeto, crie um script chamadovariables.Re defina cinco variáveis de tipos diferentes (numérico, caractere, lógico, complexo e nuloNA). Usetypeof()para verificar o tipo de cada variável, faça uma captura de tela da saída de cada um dos cinco comandostypeof()e salve-a. -
Problema avançado: Escreva um script que: ① use
paste()para concatenar"Hello"e"World"em “Hello-World” (sep = "-"); ② usecat()para exibir o resultado; ③ usenchar()para verificar o comprimento da string concatenada. Após executar o script, faça uma captura de tela e salve a saída do console. -
Desafio: Escreva um script em R que faça o seguinte: ① Use
setwd()para alterar o diretório de trabalho paratempdir()(o diretório temporário do R); ② Usegetwd()para exibir o diretório de trabalho atual; ③ Usesave.image()para salvar o espaço de trabalho emmy_workspace.RData; ④ Userm(list = ls())para limpar todas as variáveis; ⑤ Useload("my_workspace.RData")para recarregar. Verifique se todas as variáveis ainda estão presentes após a recarga. Após executar o script, faça uma captura de tela e salve a saída completa de todas as 5 etapas.