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