r - 附加到数据框的末尾并在 Shiny 应用程序中显示为表格
问题描述
我正在尝试创建一个非常简单的应用程序,用户可以在其中输入文本字段和数字,将其附加到数据框,然后将数据框显示为表格。我已经完成了 99%,但唯一的问题是新条目正在覆盖旧条目,因此您只能在数据框中获得一行,在显示的表格中获得一行。
这是一个可重现的示例:
library(shiny)
library(DT)
shinyApp(
ui = navbarPage("Making a dataframe and displaying it",
tabPanel("Input",
mainPanel(
textInput("text", "Text input", ""),
numericInput("number", "Numeric input", min=1, value = 1),
actionButton("submit", "Submit")
)
),
tabPanel("The list",
DT::dataTableOutput("thelist")
)
),
server = function(input, output) {
initial <- data.frame("text" = character(), "number" = numeric())
thelist <- eventReactive(input$submit,{rbind(initial,
data.frame("text" = input$text, "number" = input$number))
})
output$thelist = renderDataTable(thelist())
}
)
谢谢!
解决方案
您可以将数据框放入reactiveValues
并用于observeEvent
在单击时添加新行。
library(shiny)
library(DT)
shinyApp(
ui = navbarPage("Making a dataframe and displaying it",
tabPanel("Input",
mainPanel(
textInput("text", "Text input", ""),
numericInput("number", "Numeric input", min=1, value = 1),
actionButton("submit", "Submit")
)
),
tabPanel("The list",
DT::dataTableOutput("thelist")
)
),
server = function(input, output) {
rv <- reactiveValues(data = data.frame(text = character(), number = numeric()))
observeEvent(input$submit,{
rv$data <- rbind(rv$data, data.frame(text = input$text, number = input$number))
})
output$thelist = renderDataTable({
rv$data
})
}
)
推荐阅读
- python - ModuleNotFoundError:尽管已安装,但 Django 中没有名为“moviepy”的模块
- c - 页面对齐分配中的零大小堆内存
- ruby - 使用两个同名的 Ruby 类
- node.js - 条目描述符语法无效配置
- laravel - Laravel 文件上传“Laminas\Diactoros\Exception\InvalidArgumentException”
- ffmpeg - 使用 ffmpeg 连接 *.mkv 文件
- android - 有没有办法在android studio中使用对角线制作可绘制或自定义视图?
- css - 剪辑路径属性与元素重叠,并且 z-index 不起作用。我怎样才能让它停止?
- javascript - 如何使用 jQuery 填充表格?
- vba - Form的长度如何延长?