闪亮的 renderUI selectInput 返回 NULL
Posted
技术标签:
【中文标题】闪亮的 renderUI selectInput 返回 NULL【英文标题】:Shiny renderUI selectInput returned NULL 【发布时间】:2015-08-03 09:23:09 【问题描述】:我正在尝试使用一个反应模型,其中一个输入会影响多个输出,如闪亮的备忘单中所述。 我需要使用 renderUI 因为选择列表是动态呈现的(示例中未显示) 但是,在初始化期间 selectInput 返回 NULL 而不是默认值。在第一个 NULL 值之后,输入按预期工作。我是闪亮的新手,可能做错了什么。
更新:其他控件在初始化后意外返回不仅 NULL,而且还返回 NA。
见下面的代码。查看控制台输出,第一个输入返回 NULL。
Listening on http://127.0.0.1:6211
NULL
chr "1"
chr "2"
chr "1"
library(shiny)
runApp(list(
ui = bootstrapPage(
fluidPage( uiOutput('ui.A') )
),
server = function(input, output)
output$ui.A = renderUI(
selectInput("A", label = h4("input A"),
choices = list(A_1=1, A_2=2),
selected = 1)
)
A.r <- reactive(input$A )
observe(
A <- A.r()
str(A)
)
))
【问题讨论】:
我不得不经常使用if(!is.null(input$something))
和闪亮的...
【参考方案1】:
如果您使用 is.null() 并为 input$A 返回“默认值”,这可能会起作用:
A.r <- reactive(
if(is.null(input$A)) return (1)
input$A
)
【讨论】:
感谢 dugar 和 cory。我已经有一个类似于 dugar 提供的解决方案。我不确定这是一个错误,还是我在代码实现中的错误。我想这是一个闪亮的错误。【参考方案2】:Shiny 有一个名为observeEvent
的函数,我几乎总是使用它来代替observer
。它基本上只在反应值更改时运行一些代码,并且默认情况下它忽略 NULL 值。所以这是使您的示例工作的代码(我所要做的就是将您的 observe(
行更改为 observeEvent(A.r(),
library(shiny)
runApp(list(
ui = bootstrapPage(
fluidPage( uiOutput('ui.A') )
),
server = function(input, output)
output$ui.A = renderUI(
selectInput("A", label = h4("input A"),
choices = list(A_1=1, A_2=2),
selected = 1)
)
A.r <- reactive(input$A )
observeEvent(A.r(),
A <- A.r()
str(A)
)
))
【讨论】:
您对A
的使用有点令人困惑
你看问题了吗?我的回答试图尽可能地模仿问题中的代码以上是关于闪亮的 renderUI selectInput 返回 NULL的主要内容,如果未能解决你的问题,请参考以下文章
如何使用在renderUI的selectInput中选择的选项在主面板中生成不同的输出?
闪亮的模块和 renderUI 传递 javascript 代码