【发布时间】:2018-08-30 09:22:37
【问题描述】:
我制作了一个应用程序,它接受用户输入的 googlesheet 并将其绘制成箱线图 https://sjgknight.shinyapps.io/boxplotr/ 和 https://github.com/uts-cic/BoxPlotR.shiny/。
它大部分都在工作。输入不是反应式的,用户必须单击一个按钮才能阅读它们。但是(a)如果我在输入中有一个导致问题的默认“值”,并且(b)如果用户更改了他们的输入然后它给出了一个错误。
例如有了这个数据https://docs.google.com/spreadsheets/d/1ycTplwz5q21s1Z3QzpeoP5rMKlkJnQ12GBJJyIU2_q0/我应该能够创建一个“区域”箱线图,然后将输入更改为“收入”,再次单击“单击以加载数据”按钮,除非我刷新并清除网址。
使用http://shiny.rstudio.com/articles/action-buttons.html 的指导,我知道我可以创建一个“清除”按钮,我猜它会删除所有值,但我不清楚我将如何重新读取输入。我有一个isolate 块,只是尝试将其中的变量设置为NULL,但这不起作用。欢迎提出如何做到这一点的想法。在查看其他问题时,我主要看到有关根据传递给服务器的用户输入更新 UI 的问题。
所以,我想我需要使用observeEvent,但这似乎不起作用:
observeEvent(
input$gloadsheet, {
isolate({
gs_data <- gs_url(input$gsheetURL)
data <- data.frame(gs_read(gs_data, ws = input$gsheetws))
data$nID <- row.names(data)
data <- reshape(data[c("nID",input$ggrouping,input$gdataID)], idvar = "nID", timevar = input$ggrouping, direction = "wide")
data <- data[,-c(1:2)]
data <- data.frame(data)
data
})
}
)
另外,我想我可以根据这个问题使用eventReactive Shiny Reactivity Explaination (using ObserveEvent)。问题可能是此代码所基于的块(这是基于用户可以单击的多个选项获取变量的反应)。
data <- eventReactive(input$gloadsheet, {
isolate({
gs_data <- gs_url(input$gsheetURL)
data <- data.frame(gs_read(gs_data, ws = input$gsheetws))
data$nID <- row.names(data)
data <- reshape(data[c("nID",input$ggrouping,input$gdataID)], idvar = "nID", timevar = input$ggrouping, direction = "wide")
data <- data[,-c(1:2)]
data <- data.frame(data)
})
data
})
data
【问题讨论】: