Hi Shiny用户,
我一直在努力解决这个问题,感谢你的帮助。
目标:使用updateSelectInput刷新下拉列表中的变量选择。
问题:下拉列表为空,即使"存在("数据",envir = .GlobalEnv)"表示"数据"存在。
以下是我的代码。请注意"数据"是在myFunctions.R中创建的全局数据集。
RAWDATA:
colA <- c('1','2','3','3','2')
colB <- c('1','1','3','3','2')
colC <- c('14','12','33','33','26')
rawdata <- as.data.frame(cbind(colA,colB, colC))
ui.R:
fluidPage(
navbarPage(strong("My Structure"), id = "allResults",
tabPanel(value ='inputData', title = 'Run Structure',
sidebarLayout(
sidebarPanel(
actionButton("runButton", "Run Structure!"),
br(),
br(),
selectInput("selectvar", label = ("Select a variable"), choices = "")
),
mainPanel(
DT::dataTableOutput('structure')
)
)
),
tabPanel(value='temp',title="TEMP", verbatimTextOutput("temp"))
)
)
server.R:
source("./myFunctions.R")
library("DT")
function(input, output, session) {
# Run functions
structure_result <- eventReactive (input$runButton, {
assign('data', rawdata, envir=.GlobalEnv)
PrepareData(rawdata)
as.data.frame(head(data))
})
# Make a reactive copy of 'data' (a global dataset created in myFunctions.R)
data_copy <- reactiveValues()
observe({
if(exists("data") && is.data.frame(get("data", envir =.GlobalEnv))) {
data_copy$df <- get("data", envir = .GlobalEnv)
}
})
# Update SelectInput drop down list
observe({
req(data_copy$df)
updateSelectInput(session, "selectvar", choices = names(data_copy$df [ , 1:ncol(data_copy$df)]))
})
# Selected variable
var_dd <- reactiveValues()
observeEvent(input$selectvar, {
req(data_copy$df)
var_dd$selected <- match(input$selectvar, names(data_copy$df [ , 1:ncol(data_copy$df)]))
})
# Display structure results
output$structure <- DT::renderDataTable({
DT::datatable(structure_result(), options = list(paging = FALSE, searching = FALSE))
})
}
myFunctions.R:
PrepareData<-function(data) {
data<<-RankData(data)
}
RankData<-function(datax) {
return(datax[order(datax[,1],datax[,2]),])
}
非常感谢任何帮助。谢谢!
答案 0 :(得分:0)
您必须在服务器函数内部(而不是之前)获取函数,并使用local = TRUE选项。
library("DT")
function(input, output, session) {
source("./myFunctions.R", local=TRUE)
# ...
}
在这里,您可以找到有关闪亮范围规则的更多信息:Link