R Academy · Lección

Salida con formato mediante sprintf()

Controle los decimales, el relleno y la alineación con cadenas de formato de sprintf.

Lección 2 de 413 pasos

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():

  • %d entero, %f coma flotante, %s cadena, %e científico, %g automá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 salida
  • sprintf() está vectorizada para sus argumentos
  • Prefiera sprintf() a paste() 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))
Gratis para empezar

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

  1. Construcción de cadenas con paste() y paste0()
  2. Salida con formato mediante sprintf()
  3. Visualización de resultados con cat() y print()
  4. Relleno y alineación de cadenas
← Volver a R Academy