Print en R
Puedes imprimir valores en R introduciendo una variable u objeto en la consola o utilizando las funciones print
, sprintf
y cat
. En este tutorial aprenderás a imprimir valores en R en diferentes situaciones.
La función print
La función print
imprime objetos en la consola de R. Esta función es realmente útil cuando quieres que el código imprima alguna variable, mensaje u objeto cuando se evalúa un código, cuando quieres imprimir algún resultado para depurar código o cuando quieres comprobar la iteración actual de un bucle for imprimiéndolo en la consola.
Por ejemplo, puedes introducir una cadena de texto en la función print
para imprimir un mensaje en la consola.
# Imprimir un mensaje
print("Este es un mensaje de ejemplo")
[1] "Este es un mensaje de ejemplo"
También puedes imprimir variables y objetos y la función print
utilizará el método correspondiente para imprimir cada tipo de objeto. Ten en cuenta que también puedes imprimir un objeto o variable escribiéndolo en la consola de R.
# Imprimir una variable
x <- sqrt(18)
print(x)
# Ten en cuenta que esto es equivalente a:
# x
[1] 4.242641
No obstante, la función print
permite personalizar la salida. Por ejemplo, puedes utilizar el argumento digits
para establecer el número de dígitos deseado.
# Print a variable
x <- sqrt(18)
print(x, digits = 3)
[1] 4.24
La función print
puede utilizarse junto con las funciones paste o paste0. En el siguiente ejemplo estamos imprimiendo la iteración actual de un bucle for.
# Imprimir las iteraciones de un bucle
for(i in 1:5) {
print(paste("Iteración:", i))
}
[1] "Iteración: 1"
[1] "Iteración: 2"
[1] "Iteración: 3"
[1] "Iteración: 4"
[1] "Iteración: 5"
Para imprimir una variable u objeto no es necesario utilizar print
, ya que basta con escribir el nombre de la variable u objeto en la consola y pulsar intro para imprimirlo.
Puedes imprimir cadenas de texto, variables, tablas, data frames, listas, matrices y cualquier otro objeto con la función print
.
Concatenar e imprimir con cat
La función cat
concatena e imprime objetos sin comillas. Esta función difiere de print
en muchos aspectos, ya que permite introducir varios objetos pero sólo se permiten vectores atómicos. Esta función también permite enviar valores a un fichero.
cat("Uno", "Dos", "Tres")
Uno Dos Tres
Ten en cuenta que por defecto la función separa los objetos con un espacio vacío, pero puedes personalizarlo especificando un nuevo separador con sep
.
cat("Uno", "Dos", "Tres", sep = "-")
Uno-Dos-Tres
Si quieres que los objetos aparezcan en una nueva línea puedes utilizar "\n"
como separador.
cat("Uno", "Dos", "Tres", sep = "\n")
Uno
Dos
Tres
Otra diferencia interesante sobre print
y cat
es cómo cada función maneja un "\n"
dentro de la cadena a imprimir. Mientras que cat
añade una nueva línea, la función print
imprime el resultado “tal cual”.
cat("Uno\nDos")
print("Uno\nDos")
Uno
Dos
[1] "Uno\nDos"
También puedes utilizar la función cat
junto con las funciones paste
o paste0
para imprimir un único objeto.
# Variable
x <- "https://r-charts.com/"
# Print
cat(paste0("Encuentra tutoriales de R en ", x))
Encuentra tutoriales de R en https://r-charts.com/
Escribir en un fichero con sink
La función cat
es útil para escribir archivos, ya que proporciona un argumento llamado file
para especificar el archivo de salida deseado. También puede añadir valores al archivo especificado estableciendo append = TRUE
.
# Escribimos en un fichero llamado archivo.csv
cat(paste0(1:5, "A"), file = "archivo.csv", sep = "\n")
# Agregamos nuevos valores a archivo.csv
cat(paste0(1:5, "B"), file = "archivo.csv", sep = "\n", append = TRUE)
1A
2A
3A
4A
5A
1B
2B
3B
4B
5B
Sin embargo, una alternativa es utilizar la función sink
para crear un fichero y enviar todos los valores ese fichero. También tendrás que llamar a sink()
para cerrar la conexión.
# Cremos un archivo
sink(file = "archivo.txt")
# Valor
x <- 3
cat(paste0("El valor es ", x), sep = "\n")
cat("Texto en una nueva línea")
# Cerramos la conexión
sink()
closeAllConnections()
El valor es 3
Texto en una nueva línea
Eliminar comillas con noquote
Por defecto, si imprimes caracteres, se mostrarán entre comillas, como en el ejemplo siguiente.
print("R CODER")
"R CODER"
Sin embargo, en R existe una función llamada noquote
que elimina las comillas de la salida. Ten en cuenta que esta función es equivalente a print(x, quote = FALSE)
.
noquote("R CODER")
# Equivalente a:
# print("R CODER", quote = FALSE)
R CODER
La función sprintf
La función sprintf
es una envoltura de la función del lenguaje C del mismo nombre. Devuelve una cadena formateada basada en las especificaciones de conversión (ver la tabla siguiente para más información). Para cadenas de texto se puede utilizar %s
como se muestra en el siguiente ejemplo.
x <- "R CODER"
sprintf("El nombre de este sitio web es %s", x)
[1] "El nombre de este sitio web es R CODER"
También puedes añadir más variables a sprintf
y cada valor se formateará en función de la especificación de conversión correspondiente.
x <- "Pedro"
y <- 25
sprintf("Su nombre es %s y tiene %d años", x, y)
"Su nombre es Pedro y tiene 25 años
Una de las conversiones más utilizadas es %f
para especificar el número deseado de puntos decimales (6 por defecto). En el siguiente ejemplo estamos estableciendo dos puntos decimales al valor.
value <- 10
sprintf("Este es el valor con dos puntos decimales: %0.2f", value)
"Este es el valor con dos puntos decimales: 10.00"
La siguiente tabla resume las especificaciones de conversión disponibles en R y su significado.
Especificación de conversión | Significado |
---|---|
%a | Valor de doble precisión (minúsculas) |
%A | Valor de doble precisión (mayúsculas) |
%d | Valor entero |
%i | Valor entero |
%f | Valor de doble precisión, en “coma fija” |
%e | Valor de doble precisión, en “exponencial” |
%E | Valor de doble precisión, en “exponencial” |
%g | Valor de doble precisión |
%G | Valor de doble precisión |
%o | Valor entero (octal) |
%s | Cadena de caracteres |
%x | Valor entero (hexadecimal) |
%X | Valor entero (hexadecimal) |