繁体   English   中英

闪亮R中的嵌套条件面板

[英]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则面板不会打开。 但是, conditionalPanelconditionalPanel转换为javascript,因此它们看起来不像R中的标准相等性检查。

在这种情况下,您可以:

conditionalPanel(
  "input.automanualsms" == "Manual",

用。。。来代替:

conditionalPanel(
  "input.automanualsms == 'Manual'",

这将使您的嵌套面板起作用(并对您拥有的其他面板也一样)。 通用格式为"input.<inputID> == '<value>'" 请注意,整个条件用双引号括起来,特定值用单引号括起来。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM