我将一个csv文件作为数据框加载到shinyTable中。如何在shinyTable中添加一个保存更改编辑的按钮?
以下是当前文件
server.R
library(shiny)
library(shinyTable)
shinyServer(function(input, output, session) {
cachedTbl <- NULL
output$tbl <- renderHtable({
if (is.null(input$tbl)){
setwd("~/projects/shinyTable")
datafile <- read.csv("data.csv", header=TRUE, sep=",", quote="")
tbl <- datafile
cachedTbl <<- tbl
print(tbl)
return(tbl)
} else{
cachedTbl <<- input$tbl
print(input$tbl)
return(input$tbl)
}
})
})
ui.R
library(shiny)
library(shinyTable)
shinyUI(pageWithSidebar(
headerPanel("Simple Shiny Table!"),
sidebarPanel(
helpText(HTML("A simple editable matrix.
<p>Created using <a href = \"http://github.com/trestletech/shinyTable\">shinyTable</a>."))
),
mainPanel(
htable("tbl", colHeaders="provided"),
actionButton("actionButtonID","update data file")
)
))
我添加了按钮,但到目前为止它没有任何功能。在稍后的迭代中,我还想添加一个带有字段的侧面菜单,这些字段允许向数据框添加新行(也可以保存到csv文件中)。
任何想法如何执行此操作?
答案 0 :(得分:1)
我用我制作的应用程序实现了类似的功能。我是通过创建一个保存数据的函数来完成的。我假设tbl是要添加到现有csv“data.csv”的新数据行,是吗?
所以创建一个函数,如:
saveData <- function( tbl ) {
setwd("~/projects/shinyTable")
datafile <- read.csv("data.csv", header=TRUE, sep=",", quote="")
datafile <- rbind( datafile, tbl )
write.csv( datafile, file = "data.csv" )
}
然后按下按钮激活该功能,使用observeEvent检测它:
observeEvent( input$actionButtonID, {
saveData( input$tbl )
}
之前我没有使用过htable,所以我不确定数据调用“input $ tbl”,但在我看来这应该可行。
你能把它安排到你的应用程序中吗?