在 R Markdown 文件中包含 HTML 文件吗?

2024-01-07

快速总结

如何放置 HTML 文件in place在 R Markdown 文件中?

Details

我通过以下方式创建了一些漂亮的动画分区统计图脉络膜 https://cran.r-project.org/web/packages/choroplethr/vignettes/g-animated-choropleths.html.

如链接所示,动画分区图通过创建一组 PNG 图像来发挥作用,然后将这些图像滚动到循环显示图像的 HTML 文件中,以显示动画。效果很好,看起来很棒。

但现在我想将这些页面嵌入/合并到 .Rmd 文件中,以便我有一个包含这些动画分区统计图以及其他工作的整体报告。

在我看来应该有一个简单的方法来完成相当于

Links:

[please click here](http://this.is.where.you.will.go.html)

or

Images:

![cute cat image](http://because.that.is.what.we.need...another.cat.image.html)

图像路径正是我想要的:一个“放大”的参考,以将信息放在适当的位置,而不仅仅是作为链接。如何使用完整的 HTML 文件而不仅仅是图像来执行此操作?有什么办法吗?

通过示例进行解释

假设我的 choropleth HTML 文件位于我的本地路径中'./animations/demographics.html',我有一个 R Markdown 文件,例如:

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

我假设/假装!!是的先行词将完全满足我的要求:允许我将该 HTML 文件嵌入到报告的其余部分中。

Updates

两个更新。最近,我仍然无法让事情正常运转,所以我把一切都推到了GitHub 存储库 https://github.com/lazarillo/persuasive_analytical_report/tree/master,万一有人愿意帮我解决这个问题。更多详细信息可以在该存储库的自述文件中找到。

看来能够将 HTML 嵌入到 R Markdown 文件中将非常有用,所以我一直在尝试解决它。


(较旧的评论)

根据一些有用的建议,我在 R Markdown 文件中尝试了以下操作,但失败了:

闪亮方法:

```{r showChoro1}
shiny::includeHTML("./animations/demographics.html")
```

(我还添加了runtime:Shiny在 YAML 部分中。)

htmltools method:

```{r showChoro1}
htmltools::includeHTML("./animations/demographics.html")
```

(在本例中,我没有对 YAML 进行任何更改。)

在前一种情况下(Shiny),它根本不起作用。事实上,包含 HTML 似乎完全破坏了文档的功能,使得运行时似乎永远无法完全发挥作用。 (简而言之,虽然它似乎可以装载所有东西,但“装载”主轴从未消失。)

在后一种情况下,没有其他任何事情被搞乱,但它是一个破碎的图像。奇怪的是,文档顶部有一个“choropleth player”功能区,它可以工作,只是没有任何图像会弹出。


为了我自己的理智,我还提供了简单的链接,效果很好。

[This link](./animations/demographics.html) worked without a problem, except that it is not embedded, as I would prefer.

所以这显然是嵌入的一个挑战。


这是一个 hack(可能不太优雅)...想法是直接以编程方式在 Rmd 中插入 HTML,然后渲染 Rmd。

临时.Rmd 文件:

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

测试.html 文件:

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

用 HTML 代码替换 Rmd 代码然后渲染的详细代码(可能可以缩短很多)

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

编辑: htmltools::includeHTML 也适用于我提供的示例文件。是因为您的特定 html 不喜欢 UTF8 编码吗?


编辑:将@MikeWilliamson 评论纳入反馈中

我尝试了以下方法

  1. 复制并粘贴动画_choropleth.html https://github.com/lazarillo/persuasive_analytical_report/blob/master/SPM/animated_choropleth.html进入空白.Rmd
  2. 删除对 cloudfare.com 的引用,因为我在使用时遇到了访问问题 渲染(见下文)
  3. 编织HTML
  4. 放回那些 cloudfare 网页链接
  5. 将图表与渲染的 html 放在同一文件夹中
  6. 打开 HTML

我似乎取回了 html,但不确定结果是否是您所期望的

您在第 2 部分也面临同样的问题吗?您可能想发布错误消息并请求修复:)。这是我的错误消息

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R Markdown 文件中包含 HTML 文件吗? 的相关文章

  • 使用 dplyr 按组计算加权平均值(并复制其他方法)

    我对语法感到困惑dplyr当尝试计算加权平均值时 我听从大卫的建议here https stackoverflow com a 27609266 1457380 语法非常透明 因此很有吸引力 但它似乎没有按我的预期工作 低于加权平均值是针对
  • 我可以在一个变量中拥有多个值吗?

    正如标题 我可以在一个变量中拥有多个值吗 首先 我有这个表格
  • 如何重试错误语句?

    如果某个语句出错 我如何简单地告诉 R 重试该语句几次 例如 我希望做类似的事情 tryCatch dbGetQuery Query database error function e if is locking error e If da
  • 如何在shell脚本中运行R代码?

    我有一个 R 文件 myfile R 我想使用 shell 脚本来运行它 我怎样才能做到这一点 我试过这个 bin bash Rscript myfile R 但它给了我这个错误 Rscript 找不到命令 我也尝试过这个 bin bash
  • 将 html 源拆分为多个文件

    HTML 是否支持将源代码拆分为多个文件 我正在寻找 C 的等价物 include 或者也许是类似 C 的东西partial 可以采用源路径并在该位置注入文件内容的元素 如果之前有人问过这个问题 我们深表歉意 Google 和 SO 搜索没
  • 根据感兴趣的特定单词绘制高度相关的单词[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在尝试绘制一个单词的最高相关性 例如 我想绘制 鲸鱼 一词的最高十个相关性的图表 有人可以帮我执行类似的命令吗 如果有帮助的话我已经安装
  • 使用 jQuery 在元素末尾添加“更多”html?

    我一开始有一个空的 div div div 我知道如何使用 jQuery 第一次将 html 添加到我的空 div 中 mydiv html my html 但我的问题是我不知道如何在非空 div 末尾推送更多 html div my ht
  • 在 R 中使用科学记数法和 xtable

    我将 data frame 传递给 xtable dat table lt xtable dat 1 20 digits 10 我宁愿使用科学记数法 而不是像那样显示数字 我该怎么做呢 看过了 但我发现的只是R 格式化xtable中的数字
  • 是否可以在 R 中创建自定义 pch 形状?

    R 中的许多绘图函数都使用图形参数pch指定数据点的形状 根据R 文档 https www rdocumentation org packages graphics versions 3 6 2 topics points 有 26 个矢量
  • 使用过渡添加子项时 div 的平滑增长

    尽管使用了以下代码 但其行为并不符合我的预期transition所以可能有些事情我不明白 理想情况下 单击该按钮会将一个子项添加到id2div 并制作id1分区增长smoothly因此 function id1 button click g
  • 如何使用 jQuery 将各种元素包装在 div 标签中?

    我有一个 html 结构 如下所示 h5 Title h5 p Content p ul li Item li li Item li ul p Content p h5 Title h5 p Content p ul li Item li
  • 在 R 中使用 ggplot2 叠加两个图

    有两个数据框 df1 df2我需要使用 ggplot2 创建线图并显示在同一个图表上 df1 x y 2 30 4 25 6 20 8 15 df2 x y 2 12 4 16 6 20 8 24 用于绘制第一个 df p1 lt ggpl
  • R/ggplot2:如何匹配重叠区域图中的图例和绘图颜色?

    我有两个面积图 称为 蓝色 和 绿色 其中green大部分是在blue情节 但在极少数点上 它高于blue阴谋 我想使用透明度说alpha 0 2对于两者 并且还能够为每个指定颜色 我现在的问题是 自从green情节主要是在blue地块 其
  • 适用于 HTML5 混合应用程序的 CORS

    我读过很多关于 CORS 的文章 以及允许 Access Control Allow Origin 如何成为 Web 服务器的安全漏洞 但没有一篇文章解释了如何允许 HTML5 混合应用程序访问某些不允许使用通配符 的域上托管的 Web 服
  • R 中的频率加权,与 Stata 的结果比较

    我正在尝试分析明尼苏达大学 IPUMS 数据集中的数据1990 年美国人口普查 http usa ipums org usa sampdesc shtml us1990a in R 我正在使用survey http faculty wash
  • 在ggplot2中添加水平线到绘图和图例

    这段代码创建了一个漂亮的图 但我想在 y 50 处添加一条水平黑线 并让图例显示一条黑线 并在图例中显示文本 cutoff 但在图例中保留源点 我可以使用 geom line 添加该行 但无法在图例中获取该行 library ggplot2
  • 如何将带有几行代码的字符数组转换为 data.frame?

    我有以下数组 my list lt c Jan 01 Dec 31 00 00 24 00 Jan 01 Jun 30 12 00 18 00 Jul 06 Dec 31 09 00 19 00 导致以下结果的最短代码是什么 x1 x2 x
  • 使用 ggplot2 在一张画布上绘制多个图形[重复]

    这个问题在这里已经有答案了 我正在尝试根据此表将两个 ggplot2 图合并为一个图 Type RatingA RatingB 1 One 3 36 2 Two 5 53 3 One 5 57 4 One 7 74 5 Three 4 38
  • CSS交付优化:如何推迟CSS加载?

    我在尝试着优化 CSS 交付遵循针对开发人员的谷歌文档https developers google com speed docs insights OptimizeCSSDelivery example https developers
  • HTML标题属性样式[重复]

    这个问题在这里已经有答案了 如何在不使用 javascript 或 CSS 的情况下更改以下标记中标题属性的样式 因为我将 HTML 插入到原本无法编辑的文档中的特定位置 span title This is information Thi

随机推荐