#r #shiny
#r #блестящий
Вопрос:
У меня есть действительно простой CSV-файл.
> head(data)
X Y
1 1 1
2 2 2
3 3 4
4 4 8
Я пытаюсь создать панель управления shinny app, которая отображает эти данные после загрузки файла.
Это то, что у меня есть на данный момент.
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(title = "Basic dashboard"),
dashboardSidebar(
fileInput("file1", "Choose CSV File",
multiple = TRUE,
accept = c("text/csv",
"text/comma-separated-values,text/plain",
".csv")),
sidebarMenu(
menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
menuItem("Widgets", tabName = "widgets", icon = icon("th"))
)
),
dashboardBody(
tabItems(
# First tab content
tabItem(tabName = "dashboard",
fluidRow(
box(plotOutput("plot1", height = 250))
)
),
# Second tab content
tabItem(tabName = "widgets",
h2("Widgets tab content")
)
)
)
)
server <- function(input, output) {
options(shiny.maxRequestSize=100*1024^2)
inFile <- input$file1
data <- read.csv(inFile$datapath, header = input$header, stringsAsFactors = FALSE)
output$plot1 <- renderPlot({
plot(data)
})
}
shinyApp(ui, server)
Но я получаю сообщение об ошибке
Error in .getReactiveEnvironment()$currentContext() :
Operation not allowed without an active reactive context. (You tried to do something that can only be done from inside a reactive expression or observer.)
Из того, что я прочитал, прочитанный файл должен быть реактивным, а затем его нужно вызвать с помощью графика, но я не знаком с концепциями reactive, любая помощь будет оценена.
Комментарии:
1. Я предлагаю вам просмотреть эти руководства, чтобы получить основную идею реактивного программирования с помощью Shiny: rstudio.com/resources/webinars/shiny-developer-conference
Ответ №1:
Вы можете сделать
data <- reactive({
inFile <- input$file1
if(!is.null(inFile)){
read.csv(inFile$datapath, header = input$header, stringsAsFactors = FALSE)
}
})
output$plot1 <- renderPlot({
req(data())
plot(data()$X, data()$Y)
})
Комментарии:
1. Спасибо, по вашему предложению приложение запускается сейчас, но на графике перед загрузкой файла отображается ошибка «Ошибка: требуются конечные значения xlim», а после того, как я загружаю файл, он меняется на другую ошибку «Ошибка: требуются конечные значения xlim», но на нем не отображается никакого графика
2. @JuanLozano Я только что отредактировал свой ответ. Работает ли это сейчас?
3. Я внес изменения, первая ошибка исчезла, но после загрузки я получаю эту ошибку «Ошибка: недопустимый тип аргумента»