Formateo con sprintf()
Parte de la sección Lógica y flujo del Journey de R de Coddy. Lección 2 de 64.
sprintf() construye una cadena a partir de una plantilla. Cada marcador de posición % se reemplaza por el siguiente argumento: %s para texto, %d para números enteros y %f para números decimales.
name <- "Ada"
age <- 36
print(sprintf("%s is %d years old", name, age))Salida:
[1] "Ada is 36 years old"%d solo acepta números enteros: sprintf("%d", 2.5) se detiene con un error.
Una precisión entre % y f establece el número de decimales, por lo que %.2f redondea a dos posiciones:
total <- 3 * 4.5 * 1.2
print(sprintf("Total: %.2f", total))Salida:
[1] "Total: 16.20"Un ancho rellena el valor hasta alcanzar ese número de caracteres: %5d rellena a la izquierda, %-6s rellena a la derecha y %03d rellena con ceros. %% imprime un signo de porcentaje.
print(sprintf("[%5d]", 42))
print(sprintf("[%-6s]", "tea"))
print(sprintf("%03d", 7))
print(sprintf("%d%%", 85))Salida:
[1] "[ 42]"
[1] "[tea ]"
[1] "007"
[1] "85%"sprintf() está vectorizado: con argumentos vectoriales, devuelve una cadena por elemento. cat() con sep = "\n" imprime cada cadena en su propia línea.
items <- c("tea", "cake")
prices <- c(4, 12.5)
lines <- sprintf("%-5s %6.2f", items, prices)
cat(lines, sep = "\n")Salida:
tea 4.00
cake 12.50Desafío
FácilCompleta receipt_line(item, qty, price). Devuelve el artículo, la cantidad y el total de la línea (qty * price) con el formato tea x3 = 13.50: el artículo, un espacio, x seguido de la cantidad, después = y el total con exactamente dos decimales.
El código proporcionado lee el artículo, la cantidad y el precio (uno por línea) e imprime el valor devuelto.
Pruébalo tú mismo
receipt_line <- function(item, qty, price) {
# Escribe tu código aquí
""
}
# Código de entrada/salida suministrado: mantenlo tal como está
input <- suppressWarnings(readLines(file("stdin")))
cat(receipt_line(input[1], as.integer(input[2]), as.numeric(input[3])), sep = "\n")
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y flujo
1Cadenas a fondo
Subcadenas con substr()Formateo con sprintf()Dividir y unirBuscar cadenasReemplazar textoRepaso - Constructor de nombres de usuario4Matrices
Creación de matricesIndexación de matricesResúmenes de filas y columnasAritmética de matricesRepaso: tabla de asientos2Búsquedas clave-valor
Búsquedas en vectores con nombreComprobar clavesAñadir y eliminar clavesRecorrer nombresRepaso: panel bursátil5Proyecto - Libro de calificaciones
Añadir estudiantesRegistrar calificaciones3Conjuntos y conteo
Valores únicosOperaciones con conjuntosPruebas de pertenenciaConteo con table()Repaso: invitados al evento6Funciones como valores
Funciones anónimasPasar funcionesDevolver funcionesClausuras con estadoRepaso: reglas de descuento9Marcos de datos
Creación de marcos de datosColumnas y filasFiltrado de filasAdición y ordenaciónRepaso - Informe de ventas12Proyecto: Rastreador de gastos
Registro de gastosGasto totalPractica por tu cuenta: Compilador de R online