Salida con formato mediante sprintf()
Controle los decimales, el relleno y la alineación con cadenas de formato de sprintf.
Salida con formato mediante sprintf() es una lección gratuita de R Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de R Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de R Academy incluye 4 lecciones en total.
Conceptos básicos de sprintf()
sprintf() da formato a cadenas utilizando una cadena de formato con marcadores de posición. Funciona exactamente como printf de C. El primer argumento es la plantilla de formato; los argumentos posteriores rellenan los marcadores en orden.
sprintf('There are %d items', 5)
sprintf('Hello, %s!', 'Alice')
sprintf('Price: %.2f', 9.999)Marcadores de posición para enteros y cadenas
%d da formato a un entero, %s da formato a una cadena y %f da formato a un número de coma flotante. Cada marcador se sustituye, en orden, por el argumento correspondiente.
name <- 'Bob'
age <- 34
score <- 88.5
sprintf('%s is %d years old with score %.1f', name, age, score)Controlar las posiciones decimales
%.2f significa: dar formato como número de coma flotante con exactamente 2 posiciones decimales. El número entre . y f controla la precisión. Esto es ideal para divisas, porcentajes y valores científicos.
pi_val <- 3.14159265
sprintf('%.0f', pi_val)
sprintf('%.2f', pi_val)
sprintf('%.5f', pi_val)
sprintf('$%.2f', 1234.5)Ancho de campo y relleno
Un número antes de la letra de formato establece el ancho mínimo del campo. De forma predeterminada, los valores se alinean a la derecha y se rellenan con espacios a la izquierda. Esto resulta útil para alinear columnas en informes de texto sin formato.
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]))
}Alineación a la izquierda con la opción -
Anteponer - al número de ancho alinea el texto a la izquierda dentro del campo. Esta es la forma estándar de generar columnas alineadas a la izquierda en una salida de texto de ancho fijo.
# 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))Notación científica con %e y %g
%e fuerza la notación científica (por ejemplo, 1.23e+04). %g elige automáticamente la opción más corta entre %f y %e, lo que resulta útil cuando los valores abarcan muchos órdenes de magnitud.
x <- 0.000123456
y <- 123456789
sprintf('%e', x)
sprintf('%e', y)
sprintf('%g', x)
sprintf('%g', y)Relleno con ceros mediante la opción 0
Anteponer 0 al ancho rellena los números con ceros iniciales en lugar de espacios. Esto se usa habitualmente para identificadores, fechas y esquemas de numeración de archivos con ceros de relleno.
ids <- c(1, 12, 123, 1234)
sprintf('ID_%05d', ids)
# Date parts
sprintf('%04d-%02d-%02d', 2024, 5, 7)Formato de porcentajes
Para mostrar una proporción como porcentaje, multiplíquela por 100 y use %.1f%%. El doble %% inserta un signo de porcentaje literal en la salida (un solo % se interpretaría como el inicio de un marcador de posición).
pass_rate <- 0.8743
sprintf('Pass rate: %.1f%%', pass_rate * 100)
growth <- 0.0523
sprintf('Growth: +%.2f%%', growth * 100)sprintf() está vectorizada
Cuando pasa un vector como argumento a sprintf(), la función itera automáticamente sobre el vector y devuelve una cadena con formato por cada elemento. La propia cadena de formato se recicla.
products <- c('Apple', 'Banana', 'Cherry')
prices <- c(0.99, 0.59, 2.49)
sprintf('%-8s costs $%.2f', products, prices)Varios marcadores y argumentos
Cada marcador consume un argumento en orden. Puede combinar %d, %f y %s libremente en una misma cadena de formato, y todos los argumentos vectoriales se reciclan hasta alcanzar la longitud máxima.
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() frente a paste(): cuándo usar cada una
Use paste()/paste0() para concatenaciones sencillas; use sprintf() cuando necesite un formato numérico preciso (posiciones decimales, anchos y relleno). sprintf() es más verbosa, pero ofrece un control completo sobre la apariencia de los 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)Comprobación rápida
¿Qué código de formato de sprintf() inserta un signo de porcentaje literal % en la salida?
Conclusiones clave sobre sprintf()
Conclusiones clave sobre sprintf():
%dentero,%fcoma flotante,%scadena,%ecientífico,%gautomático%.2f= 2 posiciones decimales;%10.2f= ancho 10, 2 decimales%-10s= alineación a la izquierda en un campo de 10 caracteres;%05d= relleno con ceros hasta 5 dígitos%%= signo de porcentaje literal en la salidasprintf()está vectorizada para sus argumentos- Prefiera
sprintf()apaste()cuando sea importante la precisión del formato numérico
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))Aprende R con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 43
- Lecciones
- 159
Preguntas frecuentes
¿La lección «Salida con formato mediante sprintf()» es gratis?
Sí — el texto completo de «Salida con formato mediante sprintf()» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de R Academy, actualiza a CoddyKit PRO. El curso de R Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Salida con formato mediante sprintf()»?
Controle los decimales, el relleno y la alineación con cadenas de formato de sprintf. Practicas R Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar R Academy?
No se requiere experiencia previa. R Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Salida con formato mediante sprintf()»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de R Academy?
Sí. Cada lección de R Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Construcción de cadenas con paste() y paste0()
- Salida con formato mediante sprintf()
- Visualización de resultados con cat() y print()
- Relleno y alineación de cadenas