R光亮条件面板输出值 [英] R shiny conditionalPanel output value
问题描述
在R SHINY中有很多关于conditionalPanel
的问题,但是我仍然不明白如何使用server.R为conditionalPanel
创建的值。下面是我想要做的:我有一个类似http://some-url.com/php/session_check.php?sid=session_id的URL。当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")
)
))
推荐答案
我觉得output
要在conditionalPanel
条件下使用,必须在UI中渲染。
对于您的示例,条件面板的HTML将如下所示:
<div data-display-if="output.disable_ui!=0">
如果页面中没有元素(在服务器端作为输出创建)具有ID";Disable_UI";,则条件";output.Disable_UI!=0";始终为真,并且始终显示"条件"面板。
简单示例:
shiny::runApp(list(
ui = pageWithSidebar(
headerPanel("test"),
sidebarPanel(
selectInput(
"var", "Var",
0:9)),
mainPanel(
verbatimTextOutput("id"),
conditionalPanel(
condition="output.id!=0",
h4('Visible')
)
)
),
server = function(input, output) {
output$id<-reactive({input$var})
}
))
如果您选择的数字不是0,则将显示条件面板。
现在,注释verbatimTextOutput("id"),
行,页面中不再有id";id";的元素,条件面板<div data-display-if="output.id!=0">
的条件不能为false。
这篇关于R光亮条件面板输出值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!