¿Hay alguna forma de imprimir texto y contenido variable en la misma línea? Por ejemplo,
wd <- getwd()
print("Current working dir: ", wd)
No pude encontrar nada sobre la sintaxis que me permitiera hacer esto.
¿Hay alguna forma de imprimir texto y contenido variable en la misma línea? Por ejemplo,
wd <- getwd()
print("Current working dir: ", wd)
No pude encontrar nada sobre la sintaxis que me permitiera hacer esto.
Respuestas:
Puedes usar paste
conprint
print(paste0("Current working dir: ", wd))
o cat
cat("Current working dir: ", wd)
cat()
obtengo un NULL
al final :(
print(cat("test", var))
que debería sercat("test", var)
{glue} ofrece una interpolación de cadenas mucho mejor, mira mi otra respuesta . Además, como Dainis menciona con razón,
sprintf()
no está exento de problemas.
También hay sprintf()
:
sprintf("Current working dir: %s", wd)
Para imprimir en la salida de la consola, use cat()
o message()
:
cat(sprintf("Current working dir: %s\n", wd))
message(sprintf("Current working dir: %s\n", wd))
sprintf
no se imprime, solo formatea la cadena. Algo como print (sprintf (...)) es necesario dentro de los scripts.
O usando message
message("Current working dir: ", wd)
La respuesta de @agstudy es la más adecuada aquí
La forma más fácil de hacer esto es usar paste()
> paste("Today is", date())
[1] "Today is Sat Feb 21 15:25:18 2015"
paste0()
daría como resultado lo siguiente:
> paste0("Today is", date())
[1] "Today isSat Feb 21 15:30:46 2015"
Observe que no hay separador predeterminado entre la cadena y x. Usar un espacio al final de la cadena es una solución rápida:
> paste0("Today is ", date())
[1] "Today is Sat Feb 21 15:32:17 2015"
Luego combine cualquiera de las funciones con print()
> print(paste("This is", date()))
[1] "This is Sat Feb 21 15:34:23 2015"
O
> print(paste0("This is ", date()))
[1] "This is Sat Feb 21 15:34:56 2015"
Como han dicho otros usuarios, también puedes usar cat()
El paquete {glue} ofrece interpolación de cadenas. En el ejemplo, {wd}
se sustituye con el contenido de la variable. Las expresiones complejas también son compatibles.
library(glue)
wd <- getwd()
glue("Current working dir: {wd}")
#> Current working dir: /tmp/RtmpteMv88/reprex46156826ee8c
Creado el 13/05/2019 por el paquete reprex (v0.2.1)
Observe cómo la salida impresa no contiene los [1]
artefactos y las "
comillas, para lo cual se utilizan otras respuestas cat()
.
Como dijeron otros usuarios, cat () es probablemente la mejor opción.
@krlmlr sugirió usar sprintf () y actualmente es la tercera respuesta clasificada. sprintf () no es una buena idea. De la documentación de R:
La cadena de formato se pasa por la función sprintf del sistema operativo, y los formatos incorrectos pueden hacer que este último bloquee el proceso R.
No hay una buena razón para usar sprintf () sobre cat u otras opciones.
sep = ''
o obtendrás un espacio extra.