r - हाथ से बने ऊनी स्वेटर डिजाइन
चमकदार आवेदन से बुनाई(लाटेक्स) का उपयोग करके पीडीएफ रिपोर्ट तैयार करना (1)
मैं उपयोगकर्ता द्वारा परिभाषित उप-विश्लेषण के अनुसार, एक चमकदार एप्लिकेशन बनाने की कोशिश कर रहा हूं जो आपको अच्छी तरह से स्वरूपित पीडीएफ रिपोर्ट डाउनलोड करने की अनुमति देगा। मुझे यह ग्रिस्ट एक न्यूनतम उदाहरण मिला, जो ठीक काम करता है। हालांकि, जब मैंने रुस्टूडियो गैलरी से 'माइल्स-प्रति-गैलन' उदाहरण के आधार पर एक साजिश जोड़ने की कोशिश की, तो मैंने कोड को अपनाने का प्रयास करते समय कुछ त्रुटियों में भाग लिया।
मेरा server.R
यहाँ है। server.R
कोड:
library(knitr)
library(datasets)
library(ggplot2)
mpgData <- mtcars
mpgData$am <- factor(mpgData$am, labels = c("Automatic", "Manual"))
shinyServer(function(input, output) {
formulaText <- reactive({
paste("mpg ~", input$variable)
})
# Return the formula text for printing as a caption
output$caption <- renderText({
formulaText()
})
# Generate a plot of the requested variable against mpg and only
# include outliers if requested
output$mpgPlot <- renderPlot({
boxplot(as.formula(formulaText()),
data = mpgData,
outline = input$outliers)
})
myPlot1 <- reactive({
p <- print(ggplot(mpgData, aes(mpg, input$variable)) +
geom_line())
})
myPlot2 <- reactive({
#renderPlot({
p <- print(
boxplot(as.formula(formulaText()),
data = mpgData,
outline = input$outliers)
)
})
output$report = downloadHandler(
filename = 'myreport.pdf',
content = function(file) {
out = knit2pdf('input.Rnw', clean = TRUE)
file.rename(out, file) # move pdf to file for downloading
},
contentType = 'application/pdf'
)
})
और यहाँ मेरा ui.r
कोड है
library(shiny)
library(datasets)
shinyUI(fluidPage(
# Application title
titlePanel("Miles Per Gallon"),
# Sidebar with controls to select the variable to plot against mpg
# and to specify whether outliers should be included
sidebarLayout(
sidebarPanel(
textInput('firstname', 'First name', value = 'Adam'),
textInput('lastname', 'Last name', value = 'Smith'),
downloadButton('report'),
selectInput("variable", "Variable:",
c("Cylinders" = "cyl",
"Transmission" = "am",
"Gears" = "gear")),
checkboxInput("outliers", "Show outliers", FALSE)
),
# Show the caption and plot of the requested variable against mpg
mainPanel(
h3(textOutput("caption")),
plotOutput("mpgPlot")
)
)
))
जबकि input.Rnw
फ़ाइल इस तरह दिखती है:
\documentclass{article}
\begin{document}
<<names>>=
input$firstname
input$lastname
@
<<>>=
#output$mpgPlot ## N.B. This threw an error! Cannot call an object like this from shiny
print(myPlot1())
@
<<>>=
print(myPlot2())
@
\end{document}
मैं इसके साथ कुछ घंटों के लिए खेल रहा हूं, और मैं काफी अटक गया हूं। input$names
भाग ठीक काम करता है, लेकिन मैं यह नहीं समझ सकता कि reactive
साजिश कैसे लाया जाए। त्रुटि / चेतावनी संदेश 'Error: object 'input' not found'
, इसलिए मुझे पता है कि यह ui.R
स्क्रिप्ट से इनपुट इनपुट चर परिवर्तनीय परिवर्तनों का पता नहीं लगा रहा है। इसे हल करने में आपकी मदद के लिए धन्यवाद
sessionInfo()
R version 3.1.0 (2014-04-10)
Platform: x86_64-apple-darwin13.1.0 (64-bit)
locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] ggplot2_0.9.3.1.99 knitr_1.6 shiny_0.10.0
loaded via a namespace (and not attached):
[1] bitops_1.0-6 caTools_1.17 colorspace_1.2-4 digest_0.6.4 evaluate_0.5.5 formatR_0.10 grid_3.1.0 gtable_0.1.2
[9] highr_0.3 htmltools_0.2.4 httpuv_1.3.0 labeling_0.2 MASS_7.3-33 munsell_0.4.2 plyr_1.8.1 proto_0.3-10
[17] RColorBrewer_1.0-5 Rcpp_0.11.2 reshape2_1.4 RJSONIO_1.2-0.2 scales_0.2.4 stringr_0.6.2 tools_3.1.0 xtable_1.7-3
जैसा कि मेरी टिप्पणी में सुझाव दिया गया है, आपको प्रोग्रामिंग रूप से aes_string()
में तर्कों में प्रोग्राम करने के लिए aes_string()
का उपयोग करना चाहिए। आपको जो त्रुटि मिल रही है वह इसलिए है क्योंकि 'इनपुट' एक वर्ण मान है जबकि aes()
unquoted नामों की अपेक्षा करता है। यहां बताया गया है कि आपको कॉल को aes(mpg, input$variable)
को कैसे बदला जाना चाहिए:
myPlot1 <- reactive({
p <- print(ggplot(mpgData, aes_string('mpg', input$variable)) +
geom_line())
})