عدد الاستخدام اللامع للعناصر المحددة في ConditionalPanel

StackOverflow https://stackoverflow.com//questions/22064037

  •  23-12-2019
  •  | 
  •  

سؤال

أرغب في عرض محتوى تطبيقي اللامع اعتمادًا على عدد العناصر المحددة لإدخال متعدد التحديد.حتى الآن لم أتمكن من معرفة الشكل الذي يجب أن تبدو عليه الحالة لإنجاح هذا العمل.

library(shiny)

shinyUI(pageWithSidebar(
  headerPanel("select and conditional panel"),
  sidebarPanel(
    selectInput(inputId = "someSelect", multiple=TRUE, label = "Genes:", choices = colnames(someDataFrame), selected = c("ESR1", "CD44")),
  ),
  mainPanel(
    conditionalPanel(
      condition="length(input.someSelect.selected) > 2",
      tabsetPanel(
...
      )
    )
  )
))
هل كانت مفيدة؟

المحلول

لا يمكنك استخدام دالة R في حالة اللوحة الشرطية.أعتقد أن حالتك يجب أن تكون: input.someSelect.length > 2

نصائح أخرى

ربما الأمر مسألة طعم، لكنني لا أحب بناء شرطيا، لأنه يدخل منطق JavaScript إلى رمز R.بدلا من ذلك، أفضل uiutput (و renderui المعني)، والتي يمكن أن تولد واجهة مستخدم ديناميكية.في حين أن الأكحالالبانيل يمكن التعامل مع ظروف بسيطة إلى حد ما، فإن نهج UI الديناميكي يمكن أن يخلق مظهرا مشروطا يعتمد على منطق أكثر تعقيدا ويمكن أن يستفيد من قوة R. ومع ذلك، فإنه أبطأ قليلا للاستجابة للتغييرات.

إذا كنت تستخدم هذا النهج يجب أن تبدو UI.r الخاص بك مثل:

giveacodicetagpre.

و Server.r الخاص بك ستبدو شيئا مثل:

giveacodicetagpre.

نأمل أن يساعد هذا شخصًا آخر لديه نفس المشكلة التي واجهتها ...

باستخدام الإجابات المذكورة أعلاه، كنت أواجه مشكلات عند محاولة إظهار لوحة شرطية فقط عند تحديد عنصرين أو أكثر في SelectInput.كانت طريقة uiOutput/renderUi بها أخطاء وبها الشرط input.someSelect.length > 1 ظهرت ConditionalPanel حتى عندما لم يتم تحديد أي شيء في SelectInput.

باستخدام conditionPanel، كنت بحاجة إلى تضمين شرط للتحقق مما إذا كان SelectInput قد تم تعريفه:
"input.someSelect != undefined && input.someSelect.length > 1"

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top