2015-11-03 15 views
15

समस्या

क्या चमकदार एप्लिकेशन में RMarkdown स्क्रिप्ट डालने और मूल्यांकन करने का कोई तरीका है। (ध्यान दें, मैं RMarkdown में एक चमकदार आवेदन किया जाता है कि here समझाया की तलाश नहीं कर रहा हूँ, न ही मैं चमकदार में Markdown लिपियों रहा हूँ (see Shiny Gallery Markdown))चमकदार अनुप्रयोग में RMarkdown

मैं है कि पाठ, समीकरण, कोड-मात्रा एक आवेदन का निर्माण कर रहा हूँ, भूखंड, और इंटरैक्टिव तत्वों। सुविधा के लिए मैं टेक्स्ट और समीकरणों के लिए मार्कडाउन फ़ाइलों का उपयोग करता हूं और कभी-कभी साजिश करना चाहता हूं (यानी RMarkdown में अधिकांश सामान लिखें)। चूंकि चमकदार ऐप अधिक जटिल है (मैं shinydashboard का उपयोग अपनी कई अनूठी विशेषताओं सहित) करता हूं, मैं एक विकल्प पसंद करूंगा जो first link में वर्णित दृष्टिकोण का उपयोग नहीं करता है।

एक न्यूनतम काम कर उदाहरण होगा:

आर फ़ाइल:

library(shiny) 

ui <- shinyUI(
    fluidPage(
    includeMarkdown("RMarkdownFile.rmd") 
) 
) 
server <- function(input, output) {} 

shinyApp(ui, server) 

और "RMarkdownFile.rmd" एक ही फ़ोल्डर में:

This is a text 

$$ E(x) = 0 $$ 

```{r, eval = T} 
plot(rnorm(100)) 
``` 

परिणाम:

Shiny App

लक्ष्य

क्या मैं करना चाहते हैं उत्पादन करता है, तो मैं rmd -file बुनी है: RMarkdown HTML page

विशेष रूप से, मैं कोड-मात्रा के मूल्यांकन प्राप्त करना चाहते हैं (साजिश कुछ ...), और मैं प्रस्तुत गणित समीकरण प्राप्त करना चाहता हूं।

कोई विचार?

संपादित समाधान

@Bunk के इनपुट के लिए धन्यवाद, मैं आदेश knit साथ md फ़ाइलों के लिए सभी rmd फ़ाइलें रेंडर करने के लिए चुना है और उसके बाद (चमकदार अनुप्रयोग में md फ़ाइलों में शामिल हैं मैं के रूप में एचटीएमएल के बजाय markdown का उपयोग उत्तरार्द्ध समीकरणों के साथ कुछ मुद्दों का उत्पादन किया)। अंत में, includeMarkdown समीकरणों के उचित प्रदर्शन को सुनिश्चित करने के लिए withMathJax में लपेटा गया है।

अंतिम कोड इस तरह दिखता है:

library(shiny) 
library(knitr) 

rmdfiles <- c("RMarkdownFile.rmd") 
sapply(rmdfiles, knit, quiet = T) 

ui <- shinyUI(
    fluidPage(
     withMathJax(includeMarkdown("RMarkdownFile.md")) 
) 
) 
server <- function(input, output) { } 

shinyApp(ui, server) 

उत्तर

12

मैं इसे बुनाई और प्रतिपादन एक यूआई काम करना चाहिए लगता है।

library(shiny) 
library(knitr) 

ui <- shinyUI(
    fluidPage(
     uiOutput('markdown') 
) 
) 
server <- function(input, output) { 
    output$markdown <- renderUI({ 
     HTML(markdown::markdownToHTML(knit('RMarkdownFile.rmd', quiet = TRUE))) 
    }) 
} 

shinyApp(ui, server) 
+0

अच्छा विचार, मैं एक HTML फ़ाइल बनाने के लिए 'knitr' का उपयोग करने के बाद' शामिल HTML 'के साथ खेल रहा था। – David

+0

मैं इसके बारे में भी सोच रहा था, आप शायद एप्लिकेशन लोड के रूप में प्रस्तुत कर सकते हैं और इसके बजाय ऐसा कर सकते हैं। ऐसा करने से आप विशिष्ट वातावरण में कोड भाग का मूल्यांकन कर सकते हैं। मुझे नहीं पता कि यह इस मामले में उपयोगी है या नहीं। – jenesaisquoi

+0

हालांकि एक और सवाल, क्या आपका समीकरण ठीक से प्रस्तुत करता है? – David