0Pricing
R Academy · Lección

Relleno y alineación de cadenas

Use formatC() y format() para obtener texto de ancho fijo y alineado.

Relleno y alineación de cadenas es una lección gratuita de R Academy en CoddyKit. Esta es la lección 4 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.

Por qué es importante el relleno de cadenas

La salida de ancho fijo es esencial para las tablas de texto sin formato, los archivos de registro y los informes. R proporciona formatC() y format() para rellenar valores hasta un ancho fijo y garantizar que las columnas se alineen correctamente en las pantallas monoespaciadas.

# Unformatted: columns misalign
cat('Alice 85\n')
cat('Bob 9200\n')
# Padded: columns align
cat(formatC('Alice', width = 10), formatC(85,   width = 6), '\n')
cat(formatC('Bob',   width = 10), formatC(9200, width = 6), '\n')

formatC() — Relleno alineado a la derecha

formatC(x, width = n) rellena el valor hasta alcanzar al menos n caracteres de ancho y lo alinea a la derecha de forma predeterminada. Los espacios se añaden a la izquierda. Funciona tanto con números como con cadenas.

formatC('hi',   width = 10)
formatC(42,     width = 10)
formatC(3.14,   width = 10)

Alineación a la izquierda con el indicador de formatC()

El argumento flag = '-' cambia la alineación a la izquierda y rellena el lado derecho con espacios. Es ideal para las etiquetas de texto de columnas de tablas cuando quiera que los valores comiencen en el extremo izquierdo.

items <- c('Pen', 'Notebook', 'Stapler')
prices <- c(1.5, 4.99, 7.25)
for (i in seq_along(items)) {
  cat(formatC(items[i], width = 12, flag = '-'),
      formatC(prices[i], format = 'f', digits = 2, width = 8),
      '\n')
}

formatC() con formatos numéricos

formatC() admite códigos de formato: 'f' para decimales fijos, 'e' para notación científica, 'g' para elegir el más corto de los dos y 'd' para enteros. El argumento digits controla la precisión.

x <- 12345.6789
formatC(x, format = 'f', digits = 2)
formatC(x, format = 'e', digits = 3)
formatC(x, format = 'g', digits = 5)
formatC(42L, format = 'd', width = 8)

format() — Alineación en R base

format(x, width = n, justify = 'left'/'right'/'centre') es la función genérica de alineación. Funciona con cualquier objeto de R y devuelve un vector de caracteres cuyas cadenas tienen el mismo ancho. La justificación predeterminada es a la derecha para los números y a la izquierda para las cadenas.

words <- c('cat', 'elephant', 'ox')
format(words, width = 10)
format(words, width = 10, justify = 'right')

format() para la precisión numérica

format() también controla las posiciones decimales mediante nsmall (cantidad mínima de dígitos después del decimal) y big.mark para los separadores de miles. Estas opciones son ideales para mostrar cifras financieras.

format(1234567.8,  big.mark = ',', nsmall = 2)
format(0.1,        nsmall = 4)
format(c(1.5, 100, 0.005), nsmall = 3)

strrep() — Repetición de cadenas

strrep(x, times) repite una cadena un número determinado de veces. Utilícelo para construir líneas separadoras, cadenas de relleno o elementos decorativos visuales sin concatenar caracteres manualmente.

strrep('-', 40)
strrep('=-', 20)
strrep(c('ab', 'cd'), c(3, 2))
# Draw a simple table border
cat(strrep('=', 30), '\n')

Construcción de una tabla de texto de ancho fijo

Combine formatC() con cat() y strrep() para construir una tabla de texto sin formato clara. Este patrón es habitual en las herramientas de CLI y los archivos de registro.

header <- paste0(formatC('Name',  width=12,flag='-'),
                 formatC('Score', width=8,flag='-'),
                 formatC('Grade', width=8,flag='-'))
cat(header, '\n')
cat(strrep('-', 28), '\n')
row1 <- paste0(formatC('Alice',  width=12,flag='-'),
               formatC(92,width=8),formatC('A',width=8,flag='-'))
cat(row1, '\n')

formatC() frente a sprintf() para el relleno

Tanto formatC() como sprintf() pueden generar una salida con relleno. sprintf() es más conciso en casos sencillos; formatC() es más flexible para aplicar el mismo formato a un vector completo.

x <- 42
# sprintf approach
sprintf('%10d', x)
sprintf('%-10s', 'hello')
# formatC approach
formatC(x,       width = 10)
formatC('hello', width = 10, flag = '-')

Control de la notación científica

formatC(x, format='e', digits=n) u options(scipen=999) controlan cuándo R cambia a la notación científica. La opción scipen es una penalización: cuanto mayor sea su valor, más se evita la notación científica antes de cambiar a ella.

# Default scipen
print(0.0001234)
print(1234567890)
# Force scientific
formatC(0.0001234, format = 'e', digits = 3)
# Suppress scientific globally
old <- options(scipen = 999)
print(0.0001234)
options(old)

Práctica: rellenar ID y etiquetas

Una necesidad habitual es utilizar ID con ceros a la izquierda o etiquetas con relleno a la izquierda en los informes. formatC() permite hacer ambas cosas: utilice flag = '0' para rellenar números con ceros y flag = '-' para alinear cadenas a la izquierda.

ids    <- c(1, 12, 123)
names  <- c('Alice', 'Bob', 'Carol')
scores <- c(88.5, 91.0, 76.25)
for (i in seq_along(ids)) {
  cat(formatC(ids[i], width=5, format='d', flag='0'),
      formatC(names[i], width=10, flag='-'),
      formatC(scores[i], width=8, format='f', digits=2),
      '\n')
}

Comprobación rápida

¿Qué argumento de formatC() hace que la salida se alinee a la izquierda dentro del ancho especificado?

Relleno y alineación: conclusiones clave

Conclusiones clave sobre el relleno y la alineación de cadenas:

  • formatC(x, width=n) rellena hasta el ancho n y alinea a la derecha; flag='-' alinea a la izquierda
  • formatC(x, format='f', digits=2) sirve para decimales fijos; 'e' para notación científica
  • format(x, justify='left'/'right'/'centre') sirve para la alineación genérica
  • format(x, big.mark=',', nsmall=2) sirve para los separadores de miles y los decimales finales
  • strrep(s, n) repite una cadena n veces; es ideal para las líneas separadoras
  • Combine estas funciones con cat() para generar tablas de texto sin formato
cat(strrep('=', 30), '\n')
cat(formatC('Item', width=12, flag='-'),
    formatC('Price', width=10), '\n')
cat(strrep('-', 30), '\n')
cat(formatC('Apple', width=12, flag='-'),
    formatC(1.99, width=10, format='f', digits=2), '\n')

Preguntas frecuentes

¿La lección «Relleno y alineación de cadenas» es gratis?

Sí — el texto completo de «Relleno y alineación de cadenas» 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 «Relleno y alineación de cadenas»?

Use formatC() y format() para obtener texto de ancho fijo y alineado. 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 4 de 4.

¿Cuánto tiempo toma la lección «Relleno y alineación de cadenas»?

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