Include HTML files in R Markdown file?

前端 未结 3 625
野趣味
野趣味 2020-12-09 08:09

Quick Summary

How do I place HTML files in place within an R Markdown file?

Details

I have created some nice animated c

相关标签:
3条回答
  • 2020-12-09 08:50

    Did you try the includes: option in your YAML header?

    https://rmarkdown.rstudio.com/html_document_format.html#includes

    But maybe you'll have the same problem I have: I'd like to include the HTML file in a specific section in my RMarkdown document, not in the header or before/after body.

    0 讨论(0)
  • 2020-12-09 09:04

    can try put this line in the Rmarkdown and then knit. (YAML header "output: html_document"; if "runtime: shiny" somehow it does not work)

    0 讨论(0)
  • 2020-12-09 09:12

    Here is a hack (probably inelegant)...idea is to directly insert HTML programmatically in Rmd and then render Rmd.

    temp.Rmd file:

    ---
    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 file:

    <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>
    

    verbose code to replace Rmd code with HTML code and then render (can probably be shortened by a lot)

    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 also works with the sample files that I provided. Is it because your particular html does not like UTF8-encoding?


    EDIT: taking @MikeWilliamson comments into feedback

    I tried the following

    1. copied and pasted animated_choropleth.html into a blank .Rmd
    2. remove references to cloudfare.com as I had access issues while rendering (see below)
    3. knit HTML
    4. put back those cloudfare weblinks
    5. put the graphs in the same folder as the rendered html
    6. open the HTML

    I appear to get back the html but am not sure if the result is what you expect

    Are you also facing the same issue in pt 2? You might want to post the error message and ask for fixes :). This was my error message

    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
    
    0 讨论(0)
提交回复
热议问题