ユーザーがテーブル内の値を編集し、アクション ボタンを使用して対応するプロットを更新できるように、rhandsontable を使用して光沢のあるアプリを構築しています。また、ファイルをアップロードして、テーブルにデータを入力し、プロットを更新できるようにしたいと思います。
現時点では、handsontable に入力するファイルをユーザーがアップロードできるように管理していますが、アクション ボタンでプロットを更新するには、最初にテーブルをクリックして Enter キーを押す必要があります。
テーブルをクリックしてEnterキーを押すことなく、アップロードされたファイルからプロットを更新できるようにしたいと思います.誰もこれを行う方法を知っていますか?
おそらく、次のリンクで読み取られるように、input$contents と output$contents が同期していないことに関係しているのかもしれませんが、よくわかりません。
https://github.com/jrowen/rhandsontable/blob/master/vignettes/intro_rhandsontable.Rmd#shiny
現在アップロードされる .csv ファイルの例:
Currency Values
EUR 10
GBP 20
CAD 5
これまでの私のコード:
library(shiny)
library(rhandsontable)
empty_mat = matrix(1,nrow = 3, ncol = 1)
curr_names = c("EUR","GBP","CAD")
empty_dat = cbind.data.frame(curr_names,empty_mat)
names(empty_dat) = c("Currency","Values")
ui = fluidPage(sidebarLayout(
sidebarPanel(
fileInput('file1', 'Choose CSV File'),
rHandsontableOutput('contents'),
actionButton("go", "Plot Update")
),
mainPanel(
plotOutput("plot1")
)
))
server = function(input, output) {
indat <- reactive({
inFile <- input$file1
if (is.null(inFile))
return(rhandsontable(empty_dat))
raw_input = read.csv(inFile$datapath, header=T)
return(rhandsontable(raw_input))
})
output$contents <- renderRHandsontable({
indat()
})
portfoliovals <- eventReactive(input$go, {
live_data = hot_to_r(input$contents)[,2]
return(live_data)
})
output$plot1 <- renderPlot({
plot(portfoliovals()~c(1,2,3),type = "l")
})
}
shinyApp(ui, server)
2016 年 9 月 27 日更新:
作者は親切にも github にパッケージの新しいブランチをプッシュしてくれました。これにより、今のところ元のコードは問題なく動作します。詳細については、 https://github.com/jrowen/rhandsontable/issues/111を参照してください。