- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 DT::datatable
在 R 中输出格式良好的交互式表格。
...唯一的问题是我想要一份 heroku 工作来为我编写文档,而且我了解到 RStudio 和 rmarkdown::render()
在引擎盖下使用 pandoc - 但 pandoc 不会在精简版中发货 R Buildpack对于heroku。
有什么方法可以让旧的 Markdown 引擎( knitr:knit2html
或 markdown:markdownToHTML
)传递支持 datatable
的 javascript通过?或者更准确地说,在不使用 pandoc 的情况下生成下面的示例表?
这是一个最小的例子:
测试.Rmd
---
title: "testing"
output: html_document
---
this is a datatable table
```{r test2, echo=FALSE}
library(DT)
DT::datatable(
iris,
rownames = FALSE,
options = list(pageLength = 12, dom = 'tip')
)
```
this is regular R output
```{r}
head(iris)
```
require(knitr)
knitr::knit2html('testing.Rmd')
this is a datatable table <!–html_preserve–>
<!–/html_preserve–>
this is regular R output
head(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
<!–html_preserve–>
)
htmlPreserve
东西,但无法弄清楚如何在这里应用它。用
saveWidget
做了一些疯狂的事情那是不成功的,不值得重复。
最佳答案
这是一个使用包 knitr
的解决方案, markdown
, base64enc
和 htmltools
.它模仿了 rmarkdown::render
内部发生的事情,但不依赖于 pandoc
.默认情况下,它会生成一个自包含的 HTML 文件,或者可选择将所有依赖项复制到一个文件夹中。对于后者,它假设它所依赖的所有 CSS 和 JS 文件都是唯一命名的(即,如果两个 htmlwidget 都决定调用它们的 css 文件 style.css,它将不会同时导入两者)。
library("knitr")
library("htmltools")
library("base64enc")
library("markdown")
render_with_widgets <- function(input_file,
output_file = sub("\\.Rmd$", ".html", input_file, ignore.case = TRUE),
self_contained = TRUE,
deps_path = file.path(dirname(output_file), "deps")) {
# Read input and convert to Markdown
input <- readLines(input_file)
md <- knit(text = input)
# Get dependencies from knitr
deps <- knit_meta()
# Convert script dependencies into data URIs, and stylesheet
# dependencies into inline stylesheets
dep_scripts <-
lapply(deps, function(x) {
lapply(x$script, function(script) file.path(x$src$file, script))})
dep_stylesheets <-
lapply(deps, function(x) {
lapply(x$stylesheet, function(stylesheet) file.path(x$src$file, stylesheet))})
dep_scripts <- unique(unlist(dep_scripts))
dep_stylesheets <- unique(unlist(dep_stylesheets))
if (self_contained) {
dep_html <- c(
sapply(dep_scripts, function(script) {
sprintf('<script type="text/javascript" src="%s"></script>',
dataURI(file = script))
}),
sapply(dep_stylesheets, function(sheet) {
sprintf('<style>%s</style>',
paste(readLines(sheet), collapse = "\n"))
})
)
} else {
if (!dir.exists(deps_path)) {
dir.create(deps_path)
}
for (fil in c(dep_scripts, dep_stylesheets)) {
file.copy(fil, file.path(deps_path, basename(fil)))
}
dep_html <- c(
sprintf('<script type="text/javascript" src="%s"></script>',
file.path(deps_path, basename(dep_scripts))),
sprintf('<link href="%s" type="text/css" rel="stylesheet">',
file.path(deps_path, basename(dep_stylesheets)))
)
}
# Extract the <!--html_preserve--> bits
preserved <- extractPreserveChunks(md)
# Render the HTML, and then restore the preserved chunks
html <- markdownToHTML(text = preserved$value, header = dep_html)
html <- restorePreserveChunks(html, preserved$chunks)
# Write the output
writeLines(html, output_file)
}
render_with_widgets("testing.Rmd")
---
title: "TestWidgets"
author: "Nick Kennedy"
date: "5 August 2015"
output: html_document
---
First test a dygraph
```{r}
library(dygraphs)
dygraph(nhtemp, main = "New Haven Temperatures") %>%
dyRangeSelector(dateWindow = c("1920-01-01", "1960-01-01"))
```
Now a datatable
```{r}
library(DT)
datatable(iris, options = list(pageLength = 5))
```
```{r}
library(d3heatmap)
d3heatmap(mtcars, scale="column", colors="Blues")
```
render_with_widgets("TestWidgets.Rmd")
关于r - 编织 DT::datatable 没有 pandoc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31645528/
我在编织我的 RMarkdown 文件时遇到以下错误。 Parser error: while parsing a block mapping at line 1, column 1 did not
有人在 Knitr 中使用 gridSVG 吗?我发现包“gridSVG”提供了一个名为“gridsvg”的设备,我编写的代码如下。 ```{r message=FALSE, echo=FALSE,
在下面的代码片段中,我有一段代码目前正在按我希望的方式运行: def weave_iterable(*iters): return ''.join('{}'.format('{}'*len(c
我有一个相当长的 R 代码,需要大约 2-3 小时才能运行并编织成 HTML。然而,即使出现小错误或警告......编织也会中止......在下面的示例中,由于保存历史错误,它已经这样做了。 proc
我想分享一个关于如何使用github页面在rstudio上在线发布工作的逐步说明。 如果不是来自计算机科学,包括我自己,很多服用Coursera courses on data的人都会有问题,所以我想
我最近开始使用 Sweave * 用于创建使用 R 运行的分析报告,现在我希望对我的 python 脚本做同样的事情。 我找到了对 embedding python in Sweave 的引用docs
我试过在谷歌上搜索来解决这个问题,但有用的解决方案很少。 我已经安装了 Miktex、R 和 R studio。我想使用 Sweave 在 Miktex 中创建 PDF 文档。每次我打开我的 .Rnw
我有一个用 MyEclipse 制作的 Spring MVC 应用程序,其中包含生成的源代码以及我自己的源代码,以及我在生成的类上定义的方面。一切都在 MyEclipse 中编译得很好,但我现在想切换
我正在考虑使用 Postsharp 框架来减轻应用程序方法日志记录的负担。它基本上允许我用日志属性装饰方法,并在编译时将所需的日志代码注入(inject)到 il 中。我喜欢这个解决方案,因为它可以将
docs解释一下,必须通过使用 来启用 LTW xml指令或使用@EnableLoadTimeWeaving注解。然而,我两者都没有做过,但我仍然看到我的项目中的方面是正确编织的! 在这种情况下,我
我正在尝试在运行时加载类,并在此时将它们与一些 AspectJ 方面编织在一起。我启用了加载时织入,当我更常规地使用它时它会起作用。 我的@Aspect 类中有以下内容: @Before("call(
我有一个 .Rmd 文件,以前编织过没有任何问题。现在我在执行此指令时收到以下错误 confusionMatrix(prediction1, ssTesting$classe) 错误是 Error i
我有一个项目 foo-instrumented这取决于 foo . 这个项目实际上仪器foo用额外的代码,并替换它。即,foo是 foo-instrumented 的编译时依赖项但它绝对不是运行时依赖
我有一个项目,它有多个 Maven 模块,其中一个包含我的方面。如何获取方面并编织多个 Maven 模块? AspectJ Maven 插件的文档有点稀疏,找不到很多示例。 我曾尝试将 aspectj
我正在尝试使用 DT::datatable在 R 中输出格式良好的交互式表格。 ...唯一的问题是我想要一份 heroku 工作来为我编写文档,而且我了解到 RStudio 和 rmarkdown::
我正在尝试让 AspectJ 编织在一个简单的 Maven 项目中工作,但不确定哪里出了问题:当我使用“mvn exec:java”运行代码时,我没有看到预期的输出。 我确信代码可以正常工作,因为我在
尝试为大量 DTO 编织默认的 toString() 方法,仅使用编译时编织。目标是使用 Jackson 库返回 JSON 表示。 遵循了 this article 中的建议, 变成了注解式的切面配置
我正在尝试从 RStudio 编织 PDf 文件,但出现以下错误: ! LaTeX Error: File `framed.sty' not found. R 版本:3.2.2 (2015-08-14
kableExtra 创建一个包含一些图表的表格,如 its manual演示。我们将在下表中使用 kableExtra::spec_pointrange() 绘制点范围图,运行本文底部的代码。 但是
假设我在 R 中有代码 not working ,即我运行该代码并得到一些错误和警告,我想通过 R markdown 与第三人共享显示错误和警告的代码和输出. 如果我在 r 代码块中有错误,是否可以编
我是一名优秀的程序员,十分优秀!