从闪亮的输入创建数据框

时间:2020-10-14 18:35:54

标签: r shiny

我正在尝试创建一个简单的应用程序,在这里我可以从侧边栏面板输入输入,以便在第二个称为表格的选项卡上创建数据框。我能够拥有1列数据,但是当我按下“提交”按钮时,它会刷新这些数据,而不是添加另一行。非常感谢您的帮助。

这是我的代码:

CURRENT_TIMESTAMP

1 个答案:

答案 0 :(得分:1)

这是一种方法:

首先,将使用actionButton代替submitButton(通常更可取)。有关使用操作按钮的更多信息,请参见here

第二,您可以创建一个空的数据框(默认情况下),存储在reactiveValues中。选择“添加”按钮后,将使用rbind将新的一行数据添加到此数据框中。

然后,renderTable将显示更新的reactiveValues数据框。

library(shiny)
library(ggplot2)

ui <- fluidPage(
  titlePanel("Team"),
  tags$img(height = 100, width = 100,
           src = "Logo"),
  sidebarPanel(
    textInput(inputId = "date",
              label = "Date", 
              value = "yyyy/mm/dd"),
    textInput(inputId = "team",
              label = "Team Name", 
              value = "Team Name"),
    textInput(inputId = "pnumber",
              label = "Player Number", 
              value = "#"),
    selectInput("shot", "shot type:",
                list(`Shot Type` = list("wrist shot", "slap shot", "snap shot"))),
    selectInput("situation", "scoring opportunity:",
                list(`Green` = list("Double cross", "dot line pass"),
                     `Yellow` = list("2vs1", "same side quick"),
                     `Red` = list("clear", "wrap"))),
    actionButton("Add", "Add")),
  
  mainPanel(tabsetPanel(
    tabPanel("Track", plotOutput(outputId = "hockeyplot")),
    tabPanel("Data", tableOutput(outputId = "table")),
    tabPanel("Chart", plotOutput(outputId = "chart")))))


server <- function(input, output){
  
  rv <- reactiveValues(
    df = data.frame(
      Date = as.Date(character()),
      Team = character(),
      Player = character(),
      ShotType = character(),
      Situation = character()
    )
  )
  
  observeEvent(input$Add, {
    rv$df <- rbind(rv$df, data.frame(Date = input$date, 
                                     Team = input$team, 
                                     Player = input$pnumber, 
                                     ShotType = input$shot, 
                                     Situation = input$situation))
  })
  
  output$table<-renderTable({
    rv$df
  })
  
}

shinyApp(ui = ui, server = server)