Я пытаюсь поменять блестящее приложение здесь , поэтому я добавил два входа на выбор, когда вы хотите построить график данных. Один столбец моих данных - дата. Я не смог отобразить данные. Я попытался скомпоновать поле даты, но это могло быть проблемой с типами переменных ShinyApp, потому что я попытался отобразить данные на отдельном примере, и это сработало. Я заметил, что оригинальный пример использует вставку для форматирования input$x
, который отправляется пользовательским интерфейсом на сервер, используя функцию regFormula ()
. Я пытался изменить структуру и даже избавиться от нее. Все еще с ошибкой. Кроме того, я попытался использовать пакет zoo , который снова работает на отдельном примере, не входящем в приложение.
здесь приведен dput с использованием фрейма данных:
structure(list(Dead = c(0L, 0L, 0L, 0L, 0L, 1L, 9L, 0L, 0L, 0L
), Case = c(120L, 70L, 50L, 40L, 39L, 20L, 18L, 13L, 9L, 2L), Recovered = c(30L,
0L, 18L, 13L, 19L, 10L, 0L, 16L, 0L, 1L), Critical = c(0L, 0L, 0L,
0L, 8L, 4L, 0L, 3L, 2L, 0L), Date = c("18/03/2020", "17/03/2020",
"16/03/2020", "15/03/2020", "14/03/2020", "13/03/2020", "12/03/2020",
"11/03/2020", "10/03/2020", "09/03/2020")), class = "data.frame", row.names = c(NA,
10L))
if Вы проверяете дату по вышеуказанным данным, используя str(df)
, поле даты будет иметь тип chr. Даже я пытался перед загрузкой данных использовать as.factor(df$Date)
, чтобы изменить их, без надежды.
ui.R:
fluidPage(
title = 'Download a PDF report',
sidebarLayout(
sidebarPanel(
helpText(),
selectInput('x', 'Choose X-axis data',
choices = names(dataMOH)),
selectInput('y', 'Choose Y-axis data',
choices = names(dataMOH)),
radioButtons('format', 'Document format', c('PDF', 'HTML', 'Word'),
inline = TRUE),
downloadButton('downloadReport') ),
mainPanel(
plotOutput('regPlot')
)
)
)
server.R:
function(input, output) {
regFormula <- reactive({
# as.formula(paste(input$x,'~ Date'))
as.formula(paste(input$x,input$y))
})
output$regPlot <- renderPlot({
par(mar = c(4, 4, .1, .1)) # margin lines
# plot(regFormula(), data = df, pch = 19) #df : dataframe name
# plot(zoo(df$Case,as.Date(df$Date,"%d/%m/%y")))
plot(zoo(df$(input$y),as.Date(df$(input$x),"%d/%m/%y")))
})
output$downloadReport <- downloadHandler(
filename = function() {
paste('my-Report', sep = '.', switch(
input$format, PDF = 'pdf', HTML = 'html', Word = 'docx'
))
},
content = function(file) {
src <- normalizePath('report.Rmd')
# temporarily switch to the temp dir, in case you do not have write
# permission to the current working directory
owd <- setwd(tempdir())
on.exit(setwd(owd))
file.copy(src, 'report.Rmd', overwrite = TRUE)
library(rmarkdown)
out <- render('report.Rmd', switch(
input$format,
PDF = pdf_document(), HTML = html_document(), Word = word_document()))
file.rename(out, file)
}
)
}
что мне здесь не хватает?