rCharts和DT在rmarkdown中兼容吗?

14

我正在尝试使用rmarkdown创建一个文档,其中包括来自rCharts包和使用htmlwidgets中的DT库的数据表格。但是由于某种原因,我无法同时显示它们。

---
title: "Untitled"
output: html_document
---

```{r, echo=FALSE}
library(DT)
library(rCharts)

df<-data.frame(Name=c("a","Z","h","k","j"),Value=(sample(10^7,5)))

datatable(df, filter = 'top', options = list(
  pageLength = 10,iDisplaylength=10, autoWidth = TRUE
))
```

```{r, message=FALSE, echo=FALSE, results='asis'}
df<-data.frame(label=c("One","Two","Three"),valuea=c(1,2,3),
               othera=c(10,11,12),stringsAsFactors = FALSE)
p1 <- nPlot(valuea~ label, data = df, type = 'pieChart')

#Different options I tried

p1$print('inline', include_assets = TRUE, cdn = FALSE)
#p1$show('inline', include_assets = TRUE, cdn = FALSE)

#p1$print('inline', include_assets = TRUE)
#p1$show('inline', include_assets = TRUE)

#These provide an error
#p1$print('inline', include_assets = TRUE, cdn = TRUE)
#p1$show('inline', include_assets = TRUE, cdn = TRUE)

```

注释的行是我尝试过的事情。

注意:如果p1$print('inline', include_assets = TRUE, cdn = FALSE)被注释掉,则数据表格可以正常显示。

注意 II:我知道可以使用函数与iframe结合使用,但我想在图表中使用内联方式。


好问题。一般来说,未来使用htmlwidgets比使用rCharts要更好。对于饼图,有几个不错的选择。 - timelyportfolio
最近,我在工作中更频繁地直接使用JavaScript库来制作报告。无论如何,像htmlwidgets和rmarkdown这样的库为R分析师提供了很多可能性(特别是当你时间紧迫时),它们在过去几年的发展非常惊人。我不能错过感谢您为构建小部件所做出的巨大努力的机会,我用了其中的一些,但它们给了我很多见解。这样的无私努力很难得到,我想表达我的感激之情。 - Jon Nagra
很高兴听到这个消息,如果需要任何帮助,请告诉我。 - timelyportfolio
1个回答

7
页面顶部已包含jQuery库,当您在打印中包含资产时,它会再次被包含,从而导致问题。
要解决此问题,您可以尝试将include_assets设置为false,并手动添加所需的库,除了jQuery。
 p1 <- nPlot(valuea~ label, data = df, type = 'pieChart')
    cat("<link rel='stylesheet' href=.../R/3.1/library/rCharts/libraries/nvd3/css/nv.d3.css>
    <link rel='stylesheet' href=.../R/3.1/library/rCharts/libraries/nvd3/css/rNVD3.css>
    <script type='text/javascript' src=.../R/3.1/library/rCharts/libraries/nvd3/js/d3.v3.min.js></script>
    <script type='text/javascript' src=.../R/3.1/library/rCharts/libraries/nvd3/js/nv.d3.min-new.js></script>
    <script type='text/javascript' src=.../R/3.1/library/rCharts/libraries/nvd3/js/fisheye.js></script> ")
    p1$print('inline', include_assets = F, cdn = FALSE)

您可以在R中运行p1$print('inline', include_assets = T, cdn = FALSE),以查找所需的库和链接,它们将是输出的第一行。 src路径是绝对路径,因此我在上面的代码中用...替换了一些内容。


那个解决方案我从没想到过,非常感谢。我相信我们有一个赏金获胜者。 - Jon Nagra
我尝试了 p1$print('inline', include_assets = F, cdn = FALSE), p1$show('inline', include_assets = F, cdn = FALSE), p1, p1$show(), p1$print(),但是没有一个对我可行。http://rpubs.com/englianhu/Milestone-Report - Rγσ ξηg Lιαη Ημ 雷欧
你好,我正在尝试你提供的解决方案在一个flexdashboard上。唯一的输出是菜单,其他都是空的。有什么想法可能是问题出在哪里? - Prometheus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接