在使用R / Shiny作为GIS的情况下,我对反应性非常新。
如果两个不同的反应式表达式中的任何一个执行,是否可能有一个反应变量?
用户基本上可以手动创建数据框或上传数据框。问题是,我将所有反应式表达式绑定到手动创建端(customDF()),并且无法集成上载端。
换句话说,当我按下两个按钮(创建数据框和上传)时,我希望程序能够意识到数据框已经改变。我试过让任何一个表达式重新分配一个静态变量,但它打破了反应性。
这是按钮按下方法的样子:
Application.Exit();
非常感谢任何帮助。
答案 0 :(得分:0)
导入文件并选择文件? 改编自:https://gist.github.com/jcheng5/9496297
<强> server.r 强>
#list of files
files <<- ("create data frame" = "create",
"upload data frame" = "upload")
#cash results
getData <- memoise(function(file){
if (!(file %in% files))
stop("Unknown File")
data<- as.data.frame(sprintf("path///to///file///location//%s.csv", file))
data
})
#reactive function
shinyServer(function(input, output, session) {
# Define a reactive expression for the document
reactiveData <- reactive({
# Change when the "update" button is pressed...
input$update
# ...but not for anything else
isolate({
withProgress(session, {
setProgress(message = "Processing data...")
getData(input$selection)
})
})
})
#output as table or whatever
output$table <- DT::renderDataTable(DT::datatable(
data <- as.data.frame(reactiveData())
)
<强> ur.r 强>
shinyUI(fluidPage(
progressInit(),
# Application title
headerPanel("data selection"),
# Sidebar with a slider and selection inputs
sidebarPanel(width = 5,
selectInput("selection", "Choose a dataset:",
choices = files),
actionButton("update", "Change"),
),
# Show data
mainPanel(
DT::dataTableOutput("table")
)
))