R Academy · Aula

Saída formatada com sprintf()

Controle casas decimais, preenchimento e alinhamento com strings de formato do sprintf.

Aula 2 de 413 etapas

Saída formatada com sprintf() é uma aula grátis de R Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de R Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de R Academy inclui 4 aulas no total.

Noções básicas de sprintf()

sprintf() formata cadeias usando uma cadeia de formato com marcadores de posição. Ela funciona exatamente como printf da linguagem C. O primeiro argumento é o modelo de formato; os argumentos seguintes preenchem os marcadores na ordem.

sprintf('There are %d items', 5)
sprintf('Hello, %s!', 'Alice')
sprintf('Price: %.2f', 9.999)

Marcadores de posição para inteiros e cadeias

%d formata um inteiro, %s formata uma cadeia e %f formata um número de ponto flutuante. Cada marcador é substituído, na ordem, pelo argumento correspondente.

name <- 'Bob'
age  <- 34
score <- 88.5
sprintf('%s is %d years old with score %.1f', name, age, score)

Controlando casas decimais

%.2f significa: formatar como um número de ponto flutuante com exatamente 2 casas decimais. O número entre . e f controla a precisão. Isso é ideal para moedas, porcentagens e valores científicos.

pi_val <- 3.14159265
sprintf('%.0f', pi_val)
sprintf('%.2f', pi_val)
sprintf('%.5f', pi_val)
sprintf('$%.2f', 1234.5)

Largura de campo e preenchimento

Um número antes da letra de formato define a largura mínima do campo. Por padrão, os valores são alinhados à direita e preenchidos com espaços à esquerda. Isso é útil para alinhar colunas em relatórios de texto simples.

items <- c('Pen', 'Notebook', 'Stapler')
prices <- c(1.5, 4.99, 7.25)
for (i in seq_along(items)) {
  cat(sprintf('%-10s $%6.2f\n', items[i], prices[i]))
}

Alinhamento à esquerda com a flag -

Coloque - antes do número da largura para alinhar o texto à esquerda dentro do campo. Essa é a forma padrão de produzir colunas alinhadas à esquerda em saídas de texto com largura fixa.

# Right-aligned (default)
sprintf('%10s', 'hi')
# Left-aligned
sprintf('%-10s', 'hi')
# Practical: side-by-side
cat(sprintf('%-8s %5d\n', 'Alice', 42))
cat(sprintf('%-8s %5d\n', 'Bob', 7))

Notação científica com %e e %g

%e força a notação científica (por exemplo, 1.23e+04). %g escolhe automaticamente a forma mais curta entre %f e %e — útil quando os valores abrangem muitas ordens de magnitude.

x <- 0.000123456
y <- 123456789
sprintf('%e', x)
sprintf('%e', y)
sprintf('%g', x)
sprintf('%g', y)

Preenchimento com zeros usando a flag 0

Coloque 0 antes da largura para preencher os números com zeros à esquerda em vez de espaços. Isso é comumente usado para identificadores, datas e esquemas de numeração de arquivos com zeros à esquerda.

ids <- c(1, 12, 123, 1234)
sprintf('ID_%05d', ids)
# Date parts
sprintf('%04d-%02d-%02d', 2024, 5, 7)

Formatação de porcentagens

Para exibir uma razão como porcentagem, multiplique-a por 100 e use %.1f%%. O %% duplo insere um sinal de porcentagem literal na saída (um único % seria interpretado como o início de um marcador de posição).

pass_rate <- 0.8743
sprintf('Pass rate: %.1f%%', pass_rate * 100)
growth <- 0.0523
sprintf('Growth: +%.2f%%', growth * 100)

sprintf() é vetorizada

Quando você passa um vetor como argumento para sprintf(), ela itera automaticamente pelo vetor e retorna uma cadeia formatada para cada elemento. A própria cadeia de formato é repetida.

products <- c('Apple', 'Banana', 'Cherry')
prices   <- c(0.99, 0.59, 2.49)
sprintf('%-8s costs $%.2f', products, prices)

Vários marcadores, vários argumentos

Cada marcador consome um argumento na ordem. Você pode combinar livremente %d, %f e %s em uma única cadeia de formato, e todos os argumentos vetoriais são repetidos até atingir o maior comprimento.

months <- c('Jan', 'Feb', 'Mar')
revenue <- c(12500, 9800, 15300)
growth  <- c(0.05, -0.12, 0.18)
sprintf('%s: $%d (growth: %+.1f%%)',
        months, revenue, growth * 100)

sprintf() versus paste() — quando usar cada uma

Use paste()/paste0() para concatenações simples; use sprintf() quando precisar de formatação numérica precisa (casas decimais, larguras e preenchimento). sprintf() é mais detalhada, mas oferece controle completo sobre a aparência dos números.

val <- 1234567.891
# paste: no formatting control
paste('Total:', val)
# sprintf: formatted as currency
sprintf('Total: $%,.2f', val)
# With manual formatting
sprintf('Total: $%15.2f', val)

Verificação rápida

Qual código de formato em sprintf() insere um sinal de porcentagem literal % na saída?

Principais conclusões sobre sprintf()

Principais conclusões sobre sprintf():

  • %d inteiro, %f ponto flutuante, %s cadeia, %e científico, %g automático
  • %.2f = 2 casas decimais; %10.2f = largura 10, 2 casas decimais
  • %-10s = alinhamento à esquerda em um campo de 10 caracteres; %05d = preenchimento com zeros até 5 dígitos
  • %% = sinal de porcentagem literal na saída
  • sprintf() é vetorizada sobre seus argumentos
  • Prefira sprintf() a paste() quando a precisão da formatação numérica for importante
x <- 0.87654
cat(sprintf('Default f  : %f\n', x))
cat(sprintf('2 decimals : %.2f\n', x))
cat(sprintf('Percentage : %.1f%%\n', x * 100))
cat(sprintf('Scientific : %e\n', x))
cat(sprintf('Auto       : %g\n', x))
Grátis para começar

Aprenda R com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
43
Aulas
159

Perguntas Frequentes

A aula “Saída formatada com sprintf()” é grátis?

Sim — o texto completo de “Saída formatada com sprintf()” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de R Academy, atualize para CoddyKit PRO. O curso de R Academy inclui 4 aulas no total.

O que vou aprender em “Saída formatada com sprintf()”?

Controle casas decimais, preenchimento e alinhamento com strings de formato do sprintf. Você pratica R Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar R Academy?

Nenhuma experiência prévia é necessária. R Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Saída formatada com sprintf()”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de R Academy?

Sim. Cada aula de R Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Criando strings com paste() e paste0()
  2. Saída formatada com sprintf()
  3. Exibindo saída com cat() e print()
  4. Preenchimento e alinhamento de strings
← Voltar para R Academy