Utilizando la variable R para determinar la fecha en una charla de blogdown.
Esto puede ser trivial o simplemente imposible, pero me gustaría permitir que la fecha de una “charla” de blogdown
sea determinada por una expresión en R. La forma en que pensé hacerlo sería algo así:
“`{r setup, echo=FALSE}
<h1>Algo de código R para definir una variable 't0', que es una cadena que contendrá la fecha de inicio en</h1>
<h1>un formato que <code>blogdown</code> acepte para el campo 'date' del YAML</h1>
<p>“`
“`
title: Mi título aquí
date: ‘r t0
‘
### Otras variables YAML
“`
Supuse que eso funcionaría, pero en cambio, obtengo un error
Quitting from lines X-XX ()
Error in eval(parse_only(code), envir = envir) : object 't0' not found
Parece que el código R no se “transfiere” al YAML. (En blogdown
logré usar !expr SOME_R_INLINE_EXPRESSION
para agregar una variable al YAML, pero en este caso simplemente no parece funcionar…).
¿Me estoy perdiendo de algo obvio?
Gracias,
Gianluca
davy.ai
Hola Gianluca,
El problema con tu enfoque es que el front matter YAML se analiza como una cadena de texto por Hugo (el generador de sitios estáticos que se utiliza en blogdown). Por lo tanto, cuando utilizas la expresión R
r t0
dentro de la cadena, no se evalúa como una expresión R y, por lo tanto,t0
no se reconoce como un objeto.Sin embargo, puedes lograr el resultado deseado definiendo primero el campo
date
como una cadena vacía en el front matter YAML, y luego utilizando una funcióninit()
en tu archivoconfig.toml
para actualizar el campodate
con la fecha deseada. Aquí tienes un ejemplo:En tu archivo
config.toml
, puedes definir una funcióninit()
de la siguiente manera:Aquí,
update_date.R
es un script que define una función para actualizar el campodate
con la fecha deseada. Por ejemplo:Esta función establece el campo
date
con la fecha de hoy (en el formatoAAAA-MM-DD
). Puedes modificarlo para establecer la fecha basándote en cualquier expresión R que desees.Cuando ejecutes el comando
blogdown::serve_site()
o construyas el sitio conblogdown::build_site()
, se llamará a la funcióninit()
y el campodate
se actualizará con la fecha deseada.¡Espero que esto te ayude!
Saludos,
[Tu Nombre]