Я пытаюсь разработать приложение, которое могло бы помочь пользователям загрузить файл и отображать сводную статистику.
Для этого я использую приведенный ниже пользовательский интерфейс и код сервера. После завершения загрузки файла я не могу видеть фрейм данных и его сводную статистику.
Мне что-то не хватает в моем коде, но я не могу догадаться.
ui<-dashboardPage(
dashboardHeader(title = "Claim Model"),
dashboardSidebar(
sidebarMenu(id = "tabs",
menuItem("Data", tabName = "data", icon = icon("table"),startExpanded = TRUE,
menuSubItem("Load", tabName = "data1")
),
menuItem("Visualisation",icon=icon("bar-chart-o"), tabName = "vis"),
menuItem("Result", icon=icon("cog"), tabName = "result")
)
),
dashboardBody(
tags$style(type = "text/css",
".shiny-output-error { visibility: hidden; }",
".shiny-output-error:before { visibility: hidden; }"
),
tabItems(
tabItem(tabName = "data1",
fluidPage(
fluidRow(
fileInput("file1","Choose CSV File",
accept = c("text/csv",
"text/comma-seperated-values, text/plain",
".csv")
),
tags$hr(),
checkboxInput("header", "Header", TRUE),
radioButtons("sep","Separator",
choices=c(Comma = ",",
semicolon = ";",
Tab = "\t"),
selected = ";")
),
mainPanel(
tableOutput("contents")
)
)
)
)
)
)
Код сервера.
server <- shinyServer(function(input,output){
output$contents <- renderTable({
req(input$file1)
df <- read.csv(input$file1$datapath,
header=input$header,
sep=input$sep)
})
})
В настоящее время у меня нет кода для отображения статистики из фрейма данных. любая подсказка о том, как начать, будет полезна
@hplieninger Я начал с этого и думаю, мой вопрос прямой. Я разработал свою панель инструментов и обновил свой код для сервера. Проблема в том, что я не могу отобразить загружаемые данные. Я пытался выяснить, но безуспешно, поэтому опубликовал в stackoverflow.
@hplieninger Я не уверен, смогу ли я отобразить таблицу на странице Fluid без определенного поля. Я смущен подходом. Было бы здорово, ты мог бы помочь





Вот пример: Внутри dashboardBody() вам нужен второй (и третий) tabItem(), чтобы «заполнить» menuItem(tabName = "vis") и menuItem(tabName = "result"). А на сервере вам нужен код для создания графиков, таблиц или всего, что вы хотите отобразить. Кроме того, обратите внимание, как я назначил вывод read.csv() функции (называемой здесь DATA()), чтобы ее можно было использовать в разных местах внутри сервера.
UI:
ui <- dashboardPage(
dashboardHeader(title = "Claim Model"),
dashboardSidebar(
sidebarMenu(id = "tabs",
menuItem("Data", tabName = "data", icon = icon("table"),startExpanded = TRUE,
menuSubItem("Load", tabName = "data1")
),
menuItem("Visualisation",icon=icon("bar-chart-o"), tabName = "vis"),
menuItem("Result", icon=icon("cog"), tabName = "result")
)
),
dashboardBody(
tags$style(type = "text/css",
".shiny-output-error { visibility: hidden; }",
".shiny-output-error:before { visibility: hidden; }"
),
tabItems(
tabItem(tabName = "data1",
fluidPage(
fluidRow(
fileInput("file1","Choose CSV File",
accept = c("text/csv",
"text/comma-seperated-values, text/plain",
".csv")
),
tags$hr(),
checkboxInput("header", "Header", TRUE),
radioButtons("sep","Separator",
choices=c(Comma = ",",
semicolon = ";",
Tab = "\t"),
selected = ";")
),
mainPanel(
tableOutput("contents")
)
)
),
tabItem(tabName = "vis", h2("Two Plots"),
fluidRow(
box(
title = "Plot 1", solidHeader = TRUE, collapsible = TRUE,
plotOutput("hist1")
),
box(
title = "Plot 2", solidHeader = TRUE, collapsible = TRUE,
plotOutput("hist2")
)
)
)
)
)
)
сервер:
server <- function(input, output) {
DATA <- reactive({
req(input$file1)
df <- read.csv(input$file1$datapath,
header = input$header,
sep = input$sep)
return(df)
})
output$contents <- renderTable(DATA())
output$hist1 <- renderPlot({
tmp1 <- sample(which(apply(DATA(), 2, is.numeric)), 1)
hist(DATA()[, tmp1], breaks = 10, xlab = names(DATA())[tmp1], main = "")
})
output$hist2 <- renderPlot({
tmp1 <- sample(which(apply(DATA(), 2, is.numeric)), 1)
hist(DATA()[, tmp1], breaks = 20, xlab = names(DATA())[tmp1], main = "")
})
}
запустить:
library(shiny)
library(shinydashboard)
shinyApp(ui, server)
@hpliwninger, спасибо за образец кода, но я все еще не понимаю, почему я не могу видеть данные, которые я загружаю в свой пользовательский интерфейс
Где вы ожидаете «увидеть» данные и в какой форме? Когда я использую приведенный выше код и загружаю CSV-файл, набор данных отображается на вкладке "Load"; это делает renderTable() на сервере.
@ Да, правда, я хочу этого именно так, как ты. Я бы попробовал с меньшим файлом csv и скажу вам
Попробуйте начать здесь: rstudio.github.io/shinydashboard/get_started.html. Если у вас все еще есть вопросы, постарайтесь уточнить, чего вы хотите достичь, и предоставьте код, который вы пробовали, но не сработали.