Совместимы ли rCharts и DT в rmarkdown?

Я пытаюсь создать документ с rmarkdown, который включает в себя как графики из пакета rCharts, так и таблицу данных с использованием библиотеки DT, включенной в htmlwidgets. По какой-то причине я не могу отображать их оба вместе.

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

```

Закомментированные строки - это то, что я пробовал.

Примечание I: если p1$print('inline', include_assets = TRUE, cdn = FALSE) закомментирован, таблица данных отображается правильно.

Примечание II: мне известно о функции p1$save() в сочетании с iframe, однако я хотел бы использовать встроенную диаграмму.


person Jon Nagra    schedule 13.05.2015    source источник
comment
Хороший вопрос. В общем, в будущем вам будет намного лучше использовать htmlwidgets, чем rCharts. Есть несколько хороших вариантов круговых диаграмм.   -  person timelyportfolio    schedule 15.03.2016
comment
В последнее время я чаще работаю с библиотеками javascript непосредственно для своих отчетов на работе. В любом случае, такие библиотеки, как htmlwidgets и rmarkdown, предоставляют множество возможностей для r-аналитиков (особенно когда у вас мало времени), и развитие, которое они получили за последние пару лет, просто поразительно. Я не могу упустить эту возможность, чтобы поблагодарить вас за ваши огромные усилия по созданию виджетов, я использовал несколько из них, но они дали мне много информации. Такие альтруистические усилия трудно увидеть, и я хотел выразить свою благодарность.   -  person Jon Nagra    schedule 18.03.2016
comment
рад слышать, дайте мне знать, если я могу помочь в любом случае   -  person timelyportfolio    schedule 18.03.2016


Ответы (1)


Библиотека jQuery включена в верхнюю часть страницы, и когда вы include_assets в print, она снова включается, что вызывает проблемы.

Чтобы исправить это, вы можете попробовать установить 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)

Вы можете найти необходимые библиотеки и ссылки, запустив p1$print('inline', include_assets = T, cdn = FALSE) в R, они будут первыми строками вывода. Пути src являются абсолютными, поэтому я заменил некоторые из них на ... в приведенном выше коде.

person NicE    schedule 15.05.2015
comment
Такое решение никогда бы не пришло мне в голову, большое спасибо. У нас есть победитель награды, я верю. - person Jon Nagra; 15.05.2015
comment
Я пробовал p1$print('inline', include_assets = F, cdn = FALSE), p1$show('inline', include_assets = F, cdn = FALSE), p1, p1$show(), p1$print(), но никто мне не подходит. rpubs.com/englianhu/Milestone-Report - person RYO ENG Lian Hu; 26.04.2016
comment
привет, я пробую решение, которое вы предоставили на flexdashboard. единственный вывод, который я получаю, - это меню. все остальное пусто. есть идеи, в чем может быть проблема? - person Prometheus; 13.06.2017