2016-05-23 3 views
1

csvファイルをデータフレームとしてshinyTableにロードします。どのようにして変更された編集内容を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

私はこれまでに作成したアプリでも同様のことを達成しました。私はデータを保存する関数を作成することでそれを行いました。私は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使用していないが、だから私はデータの呼び出し "入力$ tbl"についてはわからないが、それは私のように動作するはずです。

あなたのアプリにそれを手配できますか?

+0

htableの値をリセットして、データが消失したことをユーザーに明示することをお勧めします。私はhtableでそれを行う方法を知らない、申し訳ありません。私は "updateNumericInput(...)"のようなコマンドを使用しますが、htableに相当するものはわかりません。 – rosscova

関連する問題