[R-es] Pregunta sobre RMarkdown

Francisco Rodríguez fjroar en hotmail.com
Vie Jul 3 09:18:02 CEST 2015


Hola buenos dias, ya he hecho la prueba, ha ido de maravilla
Por un lado he aplicado la idea de Carlos Gil (donde la verdad, tenia que haberlo sabido yo pero estaba ofuscado y si no es por esas 3 lineas no lo veia claro), y por otro el codigo de mi tocayo, Francisco (cuyo primer apellido es igual al mio tambien) y con unas ligeras adaptaciones que os resumo a continuacion (eso me ha permitido ir directamente a la instruccion que necesito que era render y que la verdad, no sabia como iba a funcionar pero practicamente permite convertir un Rmd en una plantilla que la puedes llamar desde R, lo que es una idea muy potente que no conocia), por si a alguno que otro le puede ayudar, ha hecho exactamente lo que yo queria. Expongo el codigo que he usado para llamar a mi Rmd:
library(rmarkdown)
  n.ayunt <- 2 
  for (i in 1:n.ayunt){    write.csv(i, "D:\\ ... \\PRECONFIGURACION.csv")    render(input = "D:\\ ... \\Plantilla_01.Rmd",            output_file = paste0("D:\\ ... \\SALIDA_FINAL\\Prueba",  i, ".html"))  }
Claramente la orden clave aqui es render, pero en la plantilla .Rmd tuve que hacer una ligera modificación para que leyera el dato que construyo por fuera a partir de un .csv (siguiendo la guia de Carlos) denominado PRECONFIGURACION, dicha modificacion implica que para que corra el proceso debo modificar la primera chunk que esta en mi .Rmd y que permite que se ejecute todo a traves de un valor de la variable i:
```{r echo = FALSE}
ANIO_ACTUAL<-2015
CONF <- read.csv("D:\\ ... \\PRECONFIGURACION.csv", sep = ",")
i <- CONF$x
...

```

Como todos los calculos depende del valor de i que realmente es un puntero que busca en otros ficheros filas que contienen toda la informacion necesaria, se pudo hacer lo que queria.

Realmente el tema de pasarlo a PDF es secundario. Para lo que quiero con esto es suficiente para seguir avanzando en el proyecto. De todos modos le dare mas adelante una vuelta al tema PDF cuando pueda hacer pruebas desde casa.


Un saludo y muchas gracias por la ayuda
PD Todo lo anterior lo he escrito en un word para que su legibilidad sea mejor porque el formato de la lista es el que es



> Date: Thu, 2 Jul 2015 19:35:14 +0200
> From: fjroar en hotmail.com
> To: r-help-es en r-project.org; f.rodriguez.sanc en gmail.com
> Subject: Re: [R-es] Pregunta sobre RMarkdown
> 
> Gracias. Lo pruebo mañana y os comento, un saludo
> 
> Enviado desde mi smartphone Sony Xperia™
> 
> Francisco Rodriguez Sanchez <f.rodriguez.sanc en gmail.com> wrote:
> 
> >Hola Francisco,
> >
> >Es muy fácil generar múltiples informes basados en un único documento 
> >Rmarkdown. Simplemente ejecuta un código similar a este:
> >
> >library(rmarkdown)
> >
> >dataset <- read.csv("your_dataset.csv")
> >
> >n.ayunt <- 100    # número de ayuntamientos (también se podría 
> >identificar a partir del dataset)
> >
> >for (i in 1:n.ayunt){
> >ayunt <- dataset$ayuntamiento[i]
> >render(input = "myRmddoc.Rmd", output_file = paste0(ayunt, ".html"))
> >}
> >
> >El documento 'myRmddoc.Rmd' debe usar simplemente 'ayunt' como datos. El 
> >for loop hará que ayunt sea diferente cada vez.
> >
> >Más info aquí: 
> >http://stackoverflow.com/questions/28368150/automatically-generated-reports-using-rmarkdown
> >
> >Suerte!
> >
> >Paco
> >
> >
> >
> >
> >
> >El 02/07/2015 a las 16:24, Francisco Rodríguez escribió:
> >> Hola Carlos, qu� tal
> >> Me interesa el c�mo hacer el paso 2, es decir, me valdr�a que con un c�digo R pueda llamar al fichero Rmd, y que me permitieseguardar el html que genera con un nombre que yo mismo pudiese controlar. Trato de ver si encuentro algo, pero si me das alguna indicaci�n lo pruebo entre hoy y ma�ana
> >> Un saludo y gracias
> >>
> >>
> >>> Date: Thu, 2 Jul 2015 16:16:52 +0200
> >>> From: cgb en datanalytics.com
> >>> To: r-help-es en r-project.org
> >>> Subject: Re: [R-es] Pregunta sobre RMarkdown
> >>>
> >>> Hola, �qu� tal?
> >>>
> >>> Lo que puedes hacer es que tu fichero Rmd lea el par�metro de un
> >>> fichero externo. Entonces, creas un script que:
> >>>
> >>> 1) Actualice el valor del �ndice en ese fichero externo.
> >>> 2) Compile el Rmd y le d� el nombre que te interesa.
> >>> 3) Vuelva a (1).
> >>>
> >>> Salud,
> >>>
> >>> Carlos J. Gil Bellosta
> >>> http://www.datanalytics.com
> >>>
> >>>
> >>>
> >>>
> >>> El d�a 2 de julio de 2015, 16:08, David Duncan
> >>> <dhduncan1975 en gmail.com> escribi�:
> >>>> Francisco,
> >>>>
> >>>> �As� que todo que quieres imprimir a html o pdf sea contenido dentro de un
> >>>> solo chunk?  Quiz�s por mis limitaciones en el espa�ol no veo muy claro si
> >>>> tu problema pertenece espec�ficamente a markdown o no.
> >>>>
> >>>> Yo busco una soluci�n parecida en ingl�s el otro d�a, porque quiero generar
> >>>> y guardar en archivo conjuntos de datos ligeramente distintos para mis
> >>>> estudiantes (los que son mayoritariamente copiones).  De modo que
> >>>> conseguir� este tema, y te aviso si encuentro algo por StackOverflow.
> >>>>
> >>>>
> >>>>
> >>>> 2015-07-02 8:33 GMT-05:00 Francisco Rodr�guez <fjroar en hotmail.com>:
> >>>>
> >>>>> Hola Carlos, creo que no resuelve el problema, de hecho otra de las cosas
> >>>>> que no he conseguido a�n es generar sencillamente el PDF (con los html para
> >>>>> generarlos 1 a 1 sin pb).
> >>>>> Siempre suelo obtener el error. Esto me aparece al ejecutar
> >>>>> myReport$export():
> >>>>> You may install Pandoc easily with "install.pandoc()" from the "installr"
> >>>>> package.Error in Pandoc.convert(fp, format = .self$format, proc.time =
> >>>>> as.numeric(proc.time() -  :   It seems Pandoc is not installed or path of
> >>>>> binary is not found.
> >>>>>
> >>>>> Es cierto que el ordenador que estoy usando es el del trabajo y seguro que
> >>>>> por tema de antivirus puede que haya alg�n problema (adem�s de que mi
> >>>>> torpeza), pero tengo instalado el Pandoc, y he reiniciado la m�quina y
> >>>>> estoy actualizado a la �ltima versi�n de R y RStudio
> >>>>> Adem�s al seguir el ejemplo que aparece donde indicas, me aparece el
> >>>>> siguiente mensaje cuando ejecuto por ejemplo myReport$add(matrix(5,5,5));
> >>>>> Dicho error es: Error: cannot allocate buffer
> >>>>> Probar� desde mi casa a si pillo algo de tiempo y ya os cuento, pero sobre
> >>>>> el problema inicial creo que aunque resolviese los anteriores errores a�n
> >>>>> quedar�a abierto porque en no consigo ver c�mo a partir del ejemplo pasar a
> >>>>> lo que quiero.
> >>>>> Un saludo y en todo caso muchas gracias, estoy mirando cosas por mi cuenta
> >>>>> a ver si lo resuelvo
> >>>>>
> >>>>>
> >>>>> Date: Thu, 2 Jul 2015 12:02:57 +0200
> >>>>> Subject: Re: [R-es] Pregunta sobre RMarkdown
> >>>>> From: cof en qualityexcellence.es
> >>>>> To: fjroar en hotmail.com
> >>>>> CC: r-help-es en r-project.org
> >>>>>
> >>>>> Hola Francisco,
> >>>>>
> >>>>> Puedes utilizar el paquete "pander" para hacer lo que buscas.
> >>>>> Es equivalente a knitr para generar c�digo markdown que luego con Pandoc
> >>>>> (lo tienes que tener instalado en tu equipo) genere el pdf o el html final.
> >>>>>
> >>>>> Como ejemplo mira en su p�gina:
> >>>>>
> >>>>> http://rapporter.github.io/pander/
> >>>>>
> >>>>> la secci�n "Live report generation" en la que aparece detallado y
> >>>>> comentado un ejemplo.
> >>>>> Puedes tener un programa "R" que de forma din�mica genere v�a comandos
> >>>>> "pander" cada uno de los informes que quieres.
> >>>>>
> >>>>> Saludos,
> >>>>> Carlos Ortega
> >>>>> www.qualityexcellence.es
> >>>>>
> >>>>> El 2 de julio de 2015, 9:43, Francisco Rodr�guez <fjroar en hotmail.com>
> >>>>> escribi�:
> >>>>> Hola buenos dias, tengo una duda con RMarkdown que no se si tiene facil
> >>>>> apanio.
> >>>>>
> >>>>> Resulta que para un trabajo que estoy haciendo necesito que se ejecute el
> >>>>> siguiente codigo n-veces
> >>>>>
> >>>>> ```{r echo = FALSE}
> >>>>>
> >>>>>
> >>>>>
> >>>>> ANIO_ACTUAL<-2015
> >>>>>
> >>>>>
> >>>>>
> >>>>> i=1
> >>>>>
> >>>>>
> >>>>>
> >>>>> CONFIGURACION <-read.csv("D:\\  �  \\CONFIGURACION.csv",sep
> >>>>>
> >>>>> = ",")
> >>>>>
> >>>>>
> >>>>>
> >>>>> AYUNT <- as.character(CONFIGURACION$AYUNTAMIENTO[i])
> >>>>>
> >>>>>
> >>>>>
> >>>>> ```
> >>>>>
> >>>>>
> >>>>>
> >>>>> ##Situaci�n de `r AYUNT`
> >>>>>
> >>>>>
> >>>>>
> >>>>> Al ejecutar este c�digo genera un fichero html que podemos denominar:
> >>>>>
> >>>>>                                        Ejemplo.html
> >>>>>
> >>>>>
> >>>>>
> >>>>> Tal y como est� escrito el programa, si quiero ejecutar para el siguiente
> >>>>> ayuntamiento tengo que hacer lo siguiente:
> >>>>>
> >>>>> ```{r echo = FALSE}ANIO_ACTUAL<-2015i=2CONFIGURACION <-read.csv("D:\\  �
> >>>>> \\CONFIGURACION.csv",sep = ",")AYUNT <-
> >>>>> as.character(CONFIGURACION$AYUNTAMIENTO[i])```##Situaci�n de `r AYUNT`
> >>>>>
> >>>>>
> >>>>>
> >>>>> Es decir, cambio el parametro i y tengo la generaci�n de un nuevo html que
> >>>>> machaca el anterior:
> >>>>>
> >>>>>                                         Ejemplo.html
> >>>>>
> >>>>> Mi pregunta es si puedo hacer algo del tipo que me permita, dentro del
> >>>>> codigo r incrustado en el markdown, ir cambiando el parametro i como si
> >>>>> fuera un bucle, de modo que no lo tenga que hacer manualmente y que ademas
> >>>>> para cada caso me genere un html distinto, es decir algo del tipo:
> >>>>>
> >>>>>                                        Ejemplo1.html
> >>>>>                Ejemplo2.html
> >>>>>
> >>>>> Un saludo y muchas gracias
> >>>>>
> >>>>>
> >>>>>
> >>>>>          [[alternative HTML version deleted]]
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> _______________________________________________
> >>>>>
> >>>>> R-help-es mailing list
> >>>>>
> >>>>> R-help-es en r-project.org
> >>>>>
> >>>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Saludos,
> >>>>> Carlos Ortega
> >>>>> www.qualityexcellence.es
> >>>>>
> >>>>>          [[alternative HTML version deleted]]
> >>>>>
> >>>>>
> >>>>> _______________________________________________
> >>>>> R-help-es mailing list
> >>>>> R-help-es en r-project.org
> >>>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >>>>>
> >>>>>
> >>>>          [[alternative HTML version deleted]]
> >>>>
> >>>> _______________________________________________
> >>>> R-help-es mailing list
> >>>> R-help-es en r-project.org
> >>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >>> _______________________________________________
> >>> R-help-es mailing list
> >>> R-help-es en r-project.org
> >>> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >>   		 	   		
> >> 	[[alternative HTML version deleted]]
> >>
> >>
> >>
> >> _______________________________________________
> >> R-help-es mailing list
> >> R-help-es en r-project.org
> >> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
> >-- 
> >Dr Francisco Rodriguez-Sanchez
> >Integrative Ecology Group
> >Estacion Biologica de Doñana - CSIC
> >Avda. Americo Vespucio s/n
> >41092 Sevilla (Spain)
> >http://bit.ly/frod_san
> >
> >
> >	[[alternative HTML version deleted]]
> >
> >_______________________________________________
> >R-help-es mailing list
> >R-help-es en r-project.org
> >https://stat.ethz.ch/mailman/listinfo/r-help-es
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20150703/4c41d46b/attachment-0001.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: Hola buenos dias.docx
Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
Size: 13288 bytes
Desc: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20150703/4c41d46b/attachment-0001.bin>


Más información sobre la lista de distribución R-help-es