[英]Nested Conditional Panels in Shiny R
嘿,我试图将ConditionalPanels嵌套在ConditionalPanels中。 输出显示第一个条件面板中的所有内容,而完全忽略其中的条件面板。 所需的输出流:选择“行销(SMS或电子邮件)”->“自动”或“手动”->“自动”或“手动”布局(不能同时使用两者)。
sidebarLayout(sidebarPanel(fluid = TRUE,width = 3,
h3("Marketing", style = "align:center;text-align:center;text-shadow: 2px
2px #FFFFFF"),
hr(style = "border-top: dotted 1px #FFFFFF"),
#################################################################################################
selectInput(
"WeekdayMarketingChoice",
"Please Select Marketing Type",
choices = c("Email Marketing" = "emailMarketing", "SMS Marketing" =
"smsMarketing"),
2
),
br(),
#### Mai ConditionalPanel for SMS Marketing
conditionalPanel(
condition = "input.WeekdayMarketingChoice == 'smsMarketing'",
selectInput(
"automanualsms",
"Auto or Manual",
choices = c("Automatic", "Manual"),
1
)
,
#nested conditionalpanel
conditionalPanel(
"input.automanualsms" == "Manual",
uiOutput("dayFilterControlForSMS"),
helpText("Note: SMS will be sent to all customers on selected Days"),
br(),
textAreaInput(
"textSmsMarketingWeekday",
"Enter campaign text or offers to send: ",
"Sms Marketing Text",
"100%",
"100px",
resize = "vertical"
),
helpText("Note: Enter a custom offer that you want to send!"),
br(),
actionButton(
"manualSmsCampaign",
" Launch SMS Campaign",
icon("envelope"),
style = "color: #fff; background-color: #337ab7; border-color:
#2e6da4; width: 100%; padding-left: 2dp: margin-right: 5px"
)
),
hr(),
##nested conditional panel #2
conditionalPanel(
"input.automanualsms" == "Automatic",
actionButton(
"maxSmsCampaign",
"Campaign for Max Revenue Day",
style =
"color: #fff; background-color: #6C7A89; border-color:
#C0C0C0; width: 100%; padding-left: 2dp: margin: 5dp;"
),
helpText("Note: Campaigns will lauch for day with Max Revenue"),
br(),
actionButton(
"minSmsCampaign",
"Campaign for Min Revenue Day",
style =
"color: #fff; background-color: #6C7A89; border-color:
#C0C0C0; width: 100%; padding-left: 2dp: margin: 5dp;"
),
helpText("Note: Campaigns will lauch for day with Max Revenue")
)
)
,
#### Main Conditional Panel for Email Marketing
conditionalPanel(
condition = "input.WeekdayMarketingChoice == 'emailMarketing'",
selectInput(
"automanualemail",
"Auto or Manual",
choices = c("Automatic", "Manual"),
1
)
,
#nested conditional panel #1
conditionalPanel(
"input.automanualemail" == "Manual",
uiOutput("dayFilterControlForEmail"),
helpText("Note: Emails will be sent to all customers on selected Days"),
br(),
textAreaInput(
"textEmailMarketingWeekday",
"Enter campaign text or offers to send: ",
"Special Discount Offers!",
"100%",
"100px",
resize = "vertical"
),
helpText("Note: Enter a custom offer that you want to send!"),
br(),
actionButton(
"manualEmailCampaign",
"Launch Email Campaign",
icon("envelope"),
style = "color: #fff; background-color: #337ab7; border-color: #2e6da4;
width: 100%; padding-left: 2dp: margin: 5dp;"
)
),
hr(),
#helpText("Note: Max and Min Campaigns"),
# nested conditional panel #2
conditionalPanel(
"input.automanualemail" == "Automatic",
actionButton(
"maxEmailCampaign",
"Campaign for Max Revenue Day",
style =
"color: #fff; background-color: #6C7A89; border-color:
#C0C0C0; width: 100%; padding-left: 2dp: margin: 5dp;"
),
helpText("Note: Campaigns will lauch for day with Max Revenue"),
br(),
actionButton(
"minEmailCampaign",
"Campaign for Min Revenue Day",
style =
"color: #fff; background-color: #6C7A89; border-color:
#C0C0C0; width: 100%; padding-left: 2dp: margin: 5dp;"
),
helpText("Note: Campaigns will lauch for day with Min Revenue"),
br()
)
)
),
问题在于条件面板中的某些条件格式正确,而有些则不正确。 如果条件的评估结果不为TRUE
则面板不会打开。 但是, conditionalPanel
将conditionalPanel
转换为javascript,因此它们看起来不像R中的标准相等性检查。
在这种情况下,您可以:
conditionalPanel(
"input.automanualsms" == "Manual",
用。。。来代替:
conditionalPanel(
"input.automanualsms == 'Manual'",
这将使您的嵌套面板起作用(并对您拥有的其他面板也一样)。 通用格式为"input.<inputID> == '<value>'"
。 请注意,整个条件用双引号括起来,特定值用单引号括起来。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.