【发布时间】:2014-03-03 18:48:51
【问题描述】:
关于conditionalPanel in R shiny 有很多问题,但我仍然不明白如何将 server.R 创建的值用于conditionalPanel。这是我想做的事情:我有一个类似http://some-url.com/php/session_check.php?sid=session_id 的网址。当session_id 以 0 开头时,例如http://some-url.com/php/session_check.php?sid=00221245,将返回带有用户名的字符串(例如“testuser”)。当 session_id 以除 0 以外的任何其他数字开头时,例如 http://some-url.com/php/session_check.php?sid=10221245,返回 0。现在我想隐藏一个面板,具体取决于返回的是 0 还是用户名。因此我尝试做这样的事情:
conditionalPanel(
condition="output.disable_ui!=0"
我知道这是错误的,但我真的不明白condition 参数对outputs 的作用,因为如果我对来自ui.R 的任何input 执行此操作,同样会起作用。
这是我的示例代码:
server.R
library(shiny)
library(raster)
library(rgdal)
shinyServer(function(input, output, clientData) {
output$disable_ui<-reactive({
query<-parseQueryString(clientData$url_search)
url_path<-paste(sep="","http://some-url.com/php/session_check.php?sid=",query, collapse="")
read.table(url_path)
})
data <- reactive({
inFile <- input$example_layer
if (is.null(inFile))
return(NULL)
raster.file<- raster(inFile$datapath)
})
output$raster.plot <- renderPrint({
"Nothing to see here"
})
})
ui.R
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("test"),
sidebarPanel(
conditionalPanel(
condition="output.disable_ui!=0",
#File Upload
fileInput('example_layer', 'Choose Raster Layer (ASCII)', multiple=FALSE, accept='asc')
)),
mainPanel(
verbatimTextOutput("raster.plot")
)
))
【问题讨论】:
-
如果这可行的话,所有会发生的是文件上传按钮将根据 url 显示(或不显示)。不会上传任何文件。用户在按下按钮后会被要求搜索并选择一个文件。这就是你想要的吗?
-
这与文件上传按钮无关。我想要的是,当 url 返回“0”时,侧边栏面板甚至所有面板都不会显示,而当 url 返回一些“用户名”时,所有面板都会显示。