es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Tags:  , ,

Answer

  1. Avatar for 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ón init() en tu archivo config.toml para actualizar el campo date con la fecha deseada. Aquí tienes un ejemplo:

    ---
    title: Mi título aquí
    date: ''
    ### Otras variables YAML
    ---
    

    En tu archivo config.toml, puedes definir una función init() de la siguiente manera:

    [params]
    init = "update_date.R"
    

    Aquí, update_date.R es un script que define una función para actualizar el campo date con la fecha deseada. Por ejemplo:

    # update_date.R
    
    update_date <- function(config) {
      config$date <- format(Sys.Date(), "%Y-%m-%d")
      return(config)
    }
    

    Esta función establece el campo date con la fecha de hoy (en el formato AAAA-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 con blogdown::build_site(), se llamará a la función init() y el campo date se actualizará con la fecha deseada.

    ¡Espero que esto te ayude!

    Saludos,
    [Tu Nombre]

Comments are closed.