将数据帧保存到shinyTable中的文件

时间:2016-05-23 23:42:10

标签: r shiny

我将一个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文件中)。

任何想法如何执行此操作?

1 个答案:

答案 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”,但在我看来这应该可行。

你能把它安排到你的应用程序中吗?