R shinny中的嵌套反应式表达式
我正在尝试创建一个具有以下功能的简单应用程序: 用户将选择“自定义”或“默认” 如果选择“默认”,将显示默认文本。但若选择“自定义”,用户将能够“提交”文本,并显示提交的文本 我已经编写了一些代码来实现这一点,但在“Custom”情况下无法同时处理这两个被动表达式 代码如下:R shinny中的嵌套反应式表达式,r,shiny,R,Shiny,我正在尝试创建一个具有以下功能的简单应用程序: 用户将选择“自定义”或“默认” 如果选择“默认”,将显示默认文本。但若选择“自定义”,用户将能够“提交”文本,并显示提交的文本 我已经编写了一些代码来实现这一点,但在“Custom”情况下无法同时处理这两个被动表达式 代码如下: library( shiny ) ui = navbarPage( title = 'Text', tabPanel( 'Custom App', fluidRow( radioButtons( 'rad
library( shiny )
ui = navbarPage(
title = 'Text',
tabPanel(
'Custom App',
fluidRow(
radioButtons( 'radio', 'Select Action', choices = list( 'Default' = 'Default', 'Custom' = 'Custom' ),
selected = 'Default', inline = T ),
column( 6, textInput( 'text_given', label = 'Enter Text', value = '' ) ),
actionButton( 'submit_button', 'Submit' ),
textOutput( text )
)
)
)
server = function( input, output, session ){
main = reactive({
selected_action = input$radio
if( selected_action == 'Default' ){
text_to_show = 'Default Text'
} else{
dataInput = eventReactive( input$submit_button,{
text_to_show = input$text_given
})
}
return( list( 'text_output' = text_to_show ) )
})
output$text = renderText( main()$text_output )
}
shinyApp( ui = ui, server = server )
没有必要把你的反动剂放在窝里。您应该在被动外部创建您的reactiveExpression,并从被动内部引用该对象。我相信这是你想要的,让我知道如果这有帮助
library( shiny )
ui = navbarPage(
title = 'Text',
tabPanel(
'Custom App',
fluidRow(
radioButtons( 'radio', 'Select Action', choices = list( 'Default' = 'Default', 'Custom' = 'Custom' ),
selected = 'Default', inline = T ),
column( 6, textInput( 'text_given', label = 'Enter Text', value = '' ) ),
actionButton( 'submit_button', 'Submit' ),
textOutput( "text")
)
)
)
server = function( input, output, session ){
submitted_text <- eventReactive(input$submit_button,
{
input$text_given
})
main = reactive({
selected_action = input$radio
if(selected_action == 'Default' ){
text_to_show = 'Default Text'
}
else
{
text_to_show = submitted_text()
}
return(text_to_show)
})
output$text = renderText( main() )
}
shinyApp( ui = ui, server = server )
库(闪亮)
ui=navbarPage(
标题='Text',
选项卡面板(
“自定义应用程序”,
fluidRow(
单选按钮(‘单选’、‘选择操作’、选项=列表(‘默认’=‘默认’、‘自定义’=‘自定义’),
所选=默认值,内联=T),
列(6,textInput('text_given',label='Enter text',value=''),
actionButton('submit_button','submit'),
文本输出(“文本”)
)
)
)
服务器=功能(输入、输出、会话){
submitted_text这很好用。谢谢!你能帮忙吗?我想在选择默认值时隐藏文本字段和submit按钮,只想在选择custom时显示它。怎么做?非常感谢!这很好用。唯一的一个小问题是,如果我选择custom,输入文本并提交,转到default,然后选择c返回自定义后,以前输入的文本仍然保留。如果在单击提交后该文本消失,那就太好了。感谢您的帮助。没问题,您可以添加updateTextInput(“text_given”,value=”“)在ObjvEnter中,如果你觉得它有用的话,你能考虑一下投票的结果吗?谢谢!再次感谢。这是可行的。是的,在15的声誉之后。
library( shiny )
library(shinyjs)
ui = navbarPage(
title = 'Text',
tabPanel(
'Custom App',
useShinyjs(),
fluidRow(
radioButtons( 'radio', 'Select Action', choices = list( 'Default' = 'Default', 'Custom' = 'Custom' ),
selected = 'Default', inline = T ),
column( 6, shinyjs::hidden(textInput( 'text_given', label = 'Enter Text', value = '' ) )),
shinyjs::hidden(actionButton( 'submit_button', 'Submit' )),
textOutput( "text")
)
)
)
server = function( input, output, session ){
submitted_text <- eventReactive(input$submit_button,
{
input$text_given
})
observeEvent(input$radio,
{
if(input$radio=='Default')
{
hide("text_given")
hide("submit_button")
}
else
{
show("text_given")
show("submit_button")
}
})
main = reactive({
selected_action = input$radio
if(selected_action == 'Default' ){
text_to_show = 'Default Text'
}
else
{
text_to_show = submitted_text()
}
return(text_to_show)
})
output$text = renderText( main() )
}
shinyApp( ui = ui, server = server )