Как построить в ршине в зависимости от выбранных столбцов - PullRequest
0 голосов
/ 05 сентября 2018

Я сделал блестящее приложение, которое принимает любые данные и показывает имена столбцов в зависимости от данных.

c1 <- rnorm(10,0,1)
c2 <- c(rep("txA",5),rep("txB",5))
c3 <- c(1:4,1:4,1:2)
c4 <- rep(LETTERS[1:5],2)
mydata <- data.frame(c1,c2,c3,c4)

ui <- fluidPage(
fileInput(inputId = "file",
        label = "import file"),
tableOutput("tb"),
sidebarLayout(
sidebarPanel(
uiOutput(outputId = "aa")
),
mainPanel(textOutput("a"),
          verbatimTextOutput("info"),
          verbatimTextOutput("summary"),
          plotOutput("plot", click = "plot_click")
)
          )
)


server <- function(input,output) {



output$aa <- renderUI({
validate(need(input$file != "", ""))
mydata <- read.csv(input$file$datapath)
selectInput(inputId = "aa", #can be any name?
            label="Select:",
            choices = colnames(mydata))
})

output$tb <- renderTable({
data <- input$file
if (is.null(data))return()
read.table(data$datapath,sep=",")
})

output$summary <- renderPrint({
summary(mydata)
})

output$plot <- renderPlot({
plot(mydata)
})

output$info <- renderText({
paste0("x=", input$plot_click$x, "\ny=", input$plot_click$y)
})


}
shinyApp(ui=ui, server=server)

Если я запускаю это, я получаю следующее:

the following

Я пытаюсь сделать блестящее приложение, которое показывает базовый график в зависимости от выбранных столбцов. Как бы я это сделал?

1 Ответ

0 голосов
/ 06 сентября 2018

Примерно так и будет, обязательно раскомментируйте введенный файл

library(shiny)

c1 <- rnorm(10,0,1)
c2 <- c(rep("txA",5),rep("txB",5))
c3 <- c(1:4,1:4,1:2)
c4 <- rep(LETTERS[1:5],2)
mydata <- data.frame(c1,c2,c3,c4)


ui <- fluidPage(
  fileInput(inputId = "file",
            label = "import file"),
  tableOutput("tb"),
  sidebarLayout(
    sidebarPanel(
      uiOutput(outputId = "aa")
    ),
    mainPanel(textOutput("a"),
              verbatimTextOutput("info"),
              verbatimTextOutput("summary"),
              plotOutput("plot", click = "plot_click")
    )
  )
)

server <- function(input,output) {

  output$aa <- renderUI({
    #validate(need(input$file != "", ""))
    #mydata <- read.csv(input$file$datapath)

    ## Since your  output$aa already has name aa you cant use it twice!
    selectInput(inputId = "aa2", #can be any name?
                label="Select:",
                choices = colnames(mydata))
  })

  output$tb <- renderTable({
    data <- input$file
    if (is.null(data))return()
    read.table(data$datapath,sep=",")
  })

  mysubsetdata <- eventReactive(input$aa2,{
    mydata[[input$aa2]]
  })


  output$summary <- renderPrint({
    summary(mysubsetdata())
  })

  output$plot <- renderPlot({
    plot(mysubsetdata())
  })

  output$info <- renderText({
    paste0("x=", input$plot_click$x, "\ny=", input$plot_click$y)
  })
}
shinyApp(ui=ui, server=server)

enter image description here

  • Добавлено eventReactive для прослушивания selectInput
  • Все виджеты должны иметь уникальный идентификатор, поэтому нельзя использовать aa дважды, один для renderui и один для selectInput
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...