我正在尝试创建一个用户可以在表格中输入值的应用程序。
所以我使用data.frame命令创建了一个表,并使用常规闪亮的ui和服务器代码在应用程序的HTML上绘制了表格。
我面临的问题是表格是“只读”格式,我不知道如何从闪亮的HTML页面上绘制的这样的表中读取值。
请建议我进行任何更改
提前谢谢
答案 0 :(得分:1)
在原生闪亮中,dataTableOutputs
以及tableOutputs
始终是只读的。如果您想要更多功能,则必须获得其他软件包。以下是我所知道的两个选项。他们俩都需要一些腿部工作。
rhandsontable
可以访问可以从客户端更改的类似EXCEL的表。通过适当的设置,甚至可以在服务器端访问更改的表。如需进一步阅读,我建议StéphaneLaurents回答this question。DT
为您提供了一种访问服务器端选定行的方法。这可用于实现“删除行”功能。要添加行,您必须使用textInput
s,selectInput
等自行编写,但这很简单。这两个软件包都可以通过CRAN和GitHub获得。
我个人更喜欢选项2,因为在大多数情况下,添加行/删除行界面可以更加节省。如果您为用户提供了在桌面上填写他们想要的任何内容,那么服务器就不会满意。
这是展示第二种方法的最小例子
library(DT)
library(shiny)
ui = fluidPage(
actionButton("delete_rows", "Delete selected rows"),
DT::dataTableOutput("mytable")
)
server = function(input, output, session){
serverTable = reactiveVal(mtcars)
output$mytable = DT::renderDataTable({
serverTable()
})
observeEvent(input$delete_rows, {
serverTable(serverTable()[-input$mytable_rows_selected,])
})
}
shinyApp(ui,server)