Saída formatada com sprintf()
Controle casas decimais, preenchimento e alinhamento com strings de formato do sprintf.
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():
%dinteiro,%fponto flutuante,%scadeia,%ecientífico,%gautomá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ídasprintf()é vetorizada sobre seus argumentos- Prefira
sprintf()apaste()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))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
- Criando strings com paste() e paste0()
- Saída formatada com sprintf()
- Exibindo saída com cat() e print()
- Preenchimento e alinhamento de strings