2015-05-13 10 views
14

Ich versuche, ein Dokument mit rmarkdown zu erstellen, das beide Diagramme aus dem rCharts-Paket und eine Datentabelle mit der in htmlwidgets enthaltenen DT-Bibliothek enthält. Aus irgendeinem Grund kann ich nicht beide zusammen anzeigen.Sind rCharts und DT in rmarkdown kompatibel?

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

``` 

Die kommentierten Zeilen sind die Dinge, die ich ausprobiert habe.

Hinweis I: Wenn kommentiert ist, wird die Datentabelle ordnungsgemäß angezeigt.

Hinweis II: Ich kenne p1 $ save() - Funktion kombiniert mit einem iframe, jedoch möchte ich das Diagramm inline verwenden.

+0

Gute Frage. Im Allgemeinen werden Sie in Zukunft besser 'htmlwidgets' verwenden als' rCharts'. Es gibt ein paar gute Möglichkeiten für Kreisdiagramme. – timelyportfolio

+0

In letzter Zeit arbeite ich häufiger mit den Javascript-Bibliotheken direkt für meine Berichte bei der Arbeit. In jedem Fall bieten Bibliotheken wie htmlwidgets und rmarkdown eine Menge Möglichkeiten für Analysten (besonders wenn Sie wenig Zeit haben) und die Entwicklung, die sie in den letzten Jahren hatten, ist erstaunlich. Ich kann diese Gelegenheit nicht verpassen, um Ihnen für Ihre enormen Anstrengungen beim Bau von Widgets zu danken, ich habe nur wenige von ihnen verwendet, aber sie haben mir eine Menge Einblick gegeben. Solche altruistischen Bemühungen sind schwer zu sehen und ich wollte meine Dankbarkeit zeigen. –

+0

froh zu hören, lassen Sie mich wissen, wenn ich in irgendeiner Weise helfen kann – timelyportfolio

Antwort

6

Die jQuery-Bibliothek ist am Anfang der Seite enthalten und wenn Sie include_assets in der print, ist es wieder enthalten, die Probleme verursacht.

Um dies zu beheben, können Sie versuchen, include_assets auf false und Hinzufügen der erforderlichen Bibliotheken außer jQuery "von Hand".

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) 

Sie können die erforderlichen Bibliotheken und Links von p1$print('inline', include_assets = T, cdn = FALSE) in R läuft, werden sie die ersten Zeilen ausgegeben werden. Die src Pfade sind absolut, also habe ich einige davon durch ... im obigen Code ersetzt.

+0

Diese Lösung wäre mir nie einfallen, vielen Dank. Wir haben einen Kopfgeldsieger, glaube ich. –

+0

Ich habe 'p1 $ print ('inline', include_assets = F, cdn = FALSCH)', 'p1 $ show ('inline', include_assets = F, cdn = FALSCH)', 'p1',' p1 $ show () ',' p1 $ print() 'aber niemand ist für mich praktikabel. http://rpubs.com/englianhu/Milestone-Report –

+0

Hallo, ich versuche die Lösung, die Sie auf einer Flexdashboard zur Verfügung gestellt. Die einzige Ausgabe ist ein Menü. alles andere ist leer. irgendeine Idee, was könnte das Problem sein? – Prometheus

Verwandte Themen