html - the - r markdown tutorial pdf
¿Incluir archivos HTML en el archivo R Markdown? (3)
¿Probaste la opción incluye: en tu encabezado YAML?
https://rmarkdown.rstudio.com/html_document_format.html#includes
Pero tal vez tenga el mismo problema que tengo: me gustaría incluir el archivo HTML en una sección específica de mi documento de RMarkdown, no en el encabezado o en el cuerpo anterior / posterior.
Sumario rápido
¿Cómo coloco los archivos HTML en su lugar dentro de un archivo R Markdown?
Detalles
He creado algunos bonitos mapas animados de choropleth a través de choroplethr .
Como se muestra en el enlace, los coros animados funcionan mediante la creación de un conjunto de imágenes PNG, que luego se enrollan en un archivo HTML que recorre las imágenes para mostrar la animación. Funciona muy bien, se ve muy bien.
Pero ahora quiero incrustar / incorporar estas páginas dentro del archivo .Rmd, de modo que tenga un informe holístico que incluya estos coros animados, junto con otros trabajos.
Me parece que debería haber una manera fácil de hacer un equivalente a
Campo de golf:
[please click here](http://this.is.where.you.will.go.html)
o
Imágenes:
![cute cat image](http://because.that.is.what.we.need...another.cat.image.html)
La ruta de las imágenes es precisamente lo que quiero: una referencia que se "infla" para colocar la información en su lugar, en lugar de ser solo un enlace. ¿Cómo puedo hacer esto con un archivo HTML completo en lugar de solo una imagen? ¿Hay alguna manera?
Explicación a través de Ejemplo
Digamos que mi archivo HTML de ''./animations/demographics.html''
vive en mi ruta local en ''./animations/demographics.html''
, y tengo un archivo de Markdown R como:
---
title: ''Looking at the demographics issue''
author: "Mike"
date: "April 9th, 2016"
output:
html_document:
number_sections: no
toc: yes
toc_depth: 2
fontsize: 12pt
---
# Introduction
Here is some interesting stuff that I want to talk about. But first, let''s review those earlier demographic maps we''d seen.
!![demographics map](''./animations/demographics.html'')
donde he asumido / pretendido eso !!
Es el antecedente que hará exactamente lo que quiero: permitirme incrustar ese archivo HTML en línea con el resto del informe.
Actualizaciones
Dos actualizaciones. Más recientemente, todavía no podía hacer que las cosas funcionaran, así que lo puse todo en un repositorio de GitHub , en caso de que alguien esté dispuesto a ayudarme a resolver el problema. Más detalles se pueden encontrar en el archivo Léame de ese repositorio.
Parece que ser capaz de incrustar HTML en un archivo R Markdown sería increíblemente útil, por lo que sigo intentando solucionarlo.
(Comentarios antiguos)
Según algunas de las sugerencias útiles, probé y fallé lo siguiente en el archivo Markdown R:
Método brillante:
```{r showChoro1}
shiny::includeHTML("./animations/demographics.html")
```
(También agregué runtime:Shiny
arriba en la parte de YAML).
método htmltools
:
```{r showChoro1}
htmltools::includeHTML("./animations/demographics.html")
```
(En este caso, no hice cambios al YAML).
En el primer caso ( Shiny
), no funcionó en absoluto. De hecho, incluir el HTML parecía arruinar la funcionalidad del documento, por lo que el tiempo de ejecución parecía no ser completamente funcional. (En resumen, mientras parecía cargar todo, el eje de "carga" nunca se fue).
En este último caso, nada más se desordenó, pero era una imagen rota. Curiosamente, había una cinta de "jugador de choropleth" en la parte superior del documento que funcionaría, es solo que ninguna de las imágenes aparecería.
Para mi propia cordura, también proporcioné enlaces simples, que funcionaron bien.
[This link](./animations/demographics.html) worked without a problem, except that it is not embedded, as I would prefer.
Así que es claramente un reto con la incrustación.
Aquí hay una idea para hackear (probablemente poco elegante) ... es insertar HTML directamente mediante programación en Rmd y luego renderizar Rmd.
temp.Rmd archivo:
---
title: "Introduction"
author: "chinsoon12"
date: "April 10, 2016"
output: html_document
---
<<insertHTML:[test.html]
etc, etc, etc
```{r, echo=FALSE}
htmltools::includeHTML("test.html")
```
etc, etc, etc
test.html archivo:
<html>
<head>
<title>Title</title>
</head>
<body>
<p>This is an R HTML document. When you click the <b>Knit HTML</b> button a web page will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:</p>
<p>test test</p>
</body>
</html>
código detallado para reemplazar el código Rmd con el código HTML y luego renderizar (probablemente puede reducirse mucho)
library(stringi)
subHtmlRender <- function(mdfile, htmlfile) {
#replace <<insertHTML:htmlfile with actual html code
#but without beginning white space
lines <- readLines(mdfile)
toSubcode <- paste0("<<insertHTML:[",htmlfile,"]")
location <- which(stri_detect_fixed(lines, toSubcode) )
htmllines <- stri_trim(readLines(htmlfile))
#render html doc
newRmdfile <- tempfile("temp", getwd(), ".Rmd")
newlines <- c(lines[1:(location-1)],
htmllines,
lines[min(location+1, length(lines)):length(lines)]) #be careful when insertHTML being last line in .Rmd file
write(newlines, newRmdfile)
rmarkdown::render(newRmdfile, "html_document")
shell(gsub(".Rmd",".html",basename(newRmdfile),fixed=T))
} #end subHtmlRender
subHtmlRender("temp.Rmd", "test.html")
EDIT: htmltools :: includeHTML también funciona con los archivos de muestra que proporcioné. ¿Es porque a su html en particular no le gusta la codificación UTF8?
EDITAR: tomar comentarios de @MikeWilliamson en comentarios
Probé lo siguiente
- copiado y pegado animated_choropleth.html en un .Rmd en blanco
- elimine las referencias a cloudfare.com porque tuve problemas de acceso al renderizar (ver más abajo)
- tejer HTML
- devuelve esos enlaces de nube
- Coloque los gráficos en la misma carpeta que el HTML procesado.
- abre el HTML
Parece que recupero el html pero no estoy seguro de si el resultado es el esperado
¿También estás enfrentando el mismo problema en pt 2? Es posible que desee publicar el mensaje de error y solicitar correcciones :). Este fue mi mensaje de error
pandoc.exe: Failed to retrieve http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.1.1/css/bootstrap.min.css
FailedConnectionException2 "cdnjs.cloudflare.com" 80 False getAddrInfo: does not exist (error 11001)
Error: pandoc document conversion failed with error 61
Puede intentar poner esta línea en el Rmarkdown y luego tejer. (Encabezado YAML "output: html_document"; si "runtime: shiny" de alguna manera no funciona)