Formatação com sprintf()
Parte da seção Lógica e Fluxo do Journey de R da Coddy. Lição 2 de 64.
sprintf() cria uma string a partir de um modelo. Cada marcador % é substituído pelo próximo argumento: %s para texto, %d para números inteiros e %f para números decimais.
name <- "Ada"
age <- 36
print(sprintf("%s is %d years old", name, age))Saída:
[1] "Ada is 36 years old"%d aceita apenas números inteiros: sprintf("%d", 2.5) é interrompido com um erro.
Uma precisão entre % e f define o número de casas decimais, então %.2f arredonda para duas casas:
total <- 3 * 4.5 * 1.2
print(sprintf("Total: %.2f", total))Saída:
[1] "Total: 16.20"Uma largura preenche o valor até atingir essa quantidade de caracteres: %5d preenche à esquerda, %-6s preenche à direita e %03d preenche com zeros. %% imprime um sinal de porcentagem.
print(sprintf("[%5d]", 42))
print(sprintf("[%-6s]", "tea"))
print(sprintf("%03d", 7))
print(sprintf("%d%%", 85))Saída:
[1] "[ 42]"
[1] "[tea ]"
[1] "007"
[1] "85%"sprintf() é vetorizada: com argumentos vetoriais, ela retorna uma string por elemento. cat() com sep = "\n" imprime cada string em sua própria linha.
items <- c("tea", "cake")
prices <- c(4, 12.5)
lines <- sprintf("%-5s %6.2f", items, prices)
cat(lines, sep = "\n")Saída:
tea 4.00
cake 12.50Desafio
FácilComplete receipt_line(item, qty, price). Retorne o item, a quantidade e o total da linha (qty * price) no formato tea x3 = 13.50: o item, um espaço, x seguido pela quantidade, depois = e o total com exatamente duas casas decimais.
O código fornecido lê o item, a quantidade e o preço (um por linha) e imprime o valor retornado.
Experimente você mesmo
receipt_line <- function(item, qty, price) {
# Escreva seu código aqui
""
}
# Código de entrada/saída fornecido: mantenha-o como está
input <- suppressWarnings(readLines(file("stdin")))
cat(receipt_line(input[1], as.integer(input[2]), as.numeric(input[3])), sep = "\n")
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Strings em Profundidade
Substrings com substr()Formatação com sprintf()Dividindo e UnindoPesquisando StringsSubstituindo TextoRecapitulação - Criador de Nome de Usuário4Matrizes
Criando MatrizesIndexando MatrizesResumos de Linhas e ColunasAritmética de MatrizesRecapitulação - Tabela de Assentos10Fluxo de Controle Avançado
A Função switch()ifelse() Vetorizadorepeat e breakFunções RecursivasRevisão — Classificador de Notas2Consultas de Chave-Valor
Consultas em Vetores NomeadosVerificando ChavesAdicionando e Removendo ChavesPercorrendo NomesRecapitulação - Mesa de Ações5Projeto - Boletim de Notas
Adicionando AlunosRegistrando Notas3Conjuntos e Contagem
Valores ÚnicosOperações com ConjuntosTestes de PertinênciaContagem com table()Recapitulação - Convidados do Evento6Funções como Valores
Funções AnônimasPassando FunçõesRetornando FunçõesClosures com EstadoRecapitulação - Regras de Desconto9Data Frames
Criando Data FramesColunas e LinhasFiltrando LinhasAdicionando e OrdenandoRecapitulação - Relatório de Vendas12Projeto - Rastreador de Despesas
Registro de DespesasGastos TotaisPratique por conta própria: Compilador de R online