2015-05-13 20 views
14

Próbuję utworzyć dokument z rmarkdown, który zawiera zarówno działki z pakietu rCharts i datatable przy użyciu biblioteki DT zawartej w htmlwidgets. Z jakiegoś powodu nie mogę wyświetlić ich obu razem.Czy rCharts i DT są zgodne w rmarkdown?

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

``` 

Skomentowane wiersze to rzeczy, które próbowałem.

Uwaga I: jeśli komentarz p1$print('inline', include_assets = TRUE, cdn = FALSE) jest wyświetlany, dane są wyświetlane poprawnie.

Uwaga II: Jestem świadomy funkcji p1 $ save() w połączeniu z iframe, jednak chciałbym użyć wykresu w linii.

+0

Dobre pytanie. Generalnie w przyszłości znacznie lepiej będzie używać 'htmlwidgets' niż' rCharts'. Istnieje kilka dobrych opcji wykresów kołowych. – timelyportfolio

+0

Ostatnio, pracuję częściej z bibliotekami javascript bezpośrednio dla moich raportów w pracy. W każdym razie, biblioteki takie jak htmlwidgets i rmarkdown zapewniają wiele możliwości dla analityków (szczególnie, gdy masz mało czasu), a rozwój, który mieli w ciągu ostatnich kilku lat, jest niesamowity. Nie mogę stracić okazji, by podziękować Ci za ogromny wysiłek związany z budowaniem widowni, użyłem kilku z nich, ale dały mi one dużo wglądu. Takie altruistyczne wysiłki są trudne do zobaczenia i chciałem wyrazić moją wdzięczność. –

+0

Cieszę się, że mogę usłyszeć, daj mi znać, jeśli mogę pomóc w jakikolwiek sposób – timelyportfolio

Odpowiedz

6

Biblioteka jQuery jest zawarta u góry strony, a po include_assets w numerze print jest ponownie dołączana, co powoduje problemy.

Aby to naprawić, możesz spróbować ustawić wartość include_assets na wartość false i dodać wymagane biblioteki z wyjątkiem jQuery "ręcznie".

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) 

można znaleźć wymaganych bibliotek i linki uruchamiając p1$print('inline', include_assets = T, cdn = FALSE) w R, będą pierwsze linie wyjścia. Ścieżki src są absolutne, więc niektóre z nich zastąpiłem ... w powyższym kodzie.

+0

To rozwiązanie nigdy by mi nie przyszło, wielkie dzięki. Wierzę, że mamy zwycięzcę nagrody. –

+0

Próbowałem 'p1 $ print ('inline', include_assets = F, cdn = FALSE)', 'p1 $ show ('inline', include_assets = F, cdn = FALSE)', 'p1',' p1 $ show () ',' p1 $ print() 'ale nikt nie jest dla mnie wykonalny. http://rpubs.com/englianhu/Milestone-Report –

+0

Witam, próbuję rozwiązania, które dostarczyłeś na flexdashboard. jedynym wyjściem jest uzyskanie menu. wszystko inne jest puste. jakikolwiek pomysł, jaki może być problem? – Prometheus