我正在使用 rhandsontable 构建一个闪亮的应用程序,以便用户可以编辑表中的值,然后使用操作按钮更新相应的绘图。我还希望他们能够上传一个文件,然后该文件将填充表格,然后更新绘图。
截至目前,我已经设法允许用户上传一个填充handsontable的文件,但是为了让操作按钮更新情节,他们必须首先点击表格并按回车键。
我希望他们能够从上传的文件中更新绘图,而无需单击表格并按 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 。