私はビルドしている比較的複雑なアプリケーションを持っています。ユーザーは結合スライダーをドラッグしていくつかの計算のための重みを設定します。これらは常に100%になるはずです。私はthisとthatを見ましたが、私は反応性と隔離に本当の問題があり、updatesliderオプションは2つのスライダの上で動作するようです。複数の従属スライダーをバイパスする光沢のある条件付きパネル
代わりに、私は問題を転記しました。私は、重みが100%になるようにする必要がある場合は合計100%にする必要があり、そうであればプロット出力の例を表示する必要があることをユーザーに伝えます。 Simplesの権利?まあ、条件は合致していないので、いいえ。 thisとthisとthisを見た後、私はそれを動作させることができません。
私はこの問題を実証するために、以下の再現可能な例を提供しています。それは、反応性とオブザーバーが光沢のある私の厄介さのためだと思われます。
library(shiny)
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("testing 1 2 3"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
),
# Show a plot of the generated distribution
mainPanel(
fluidRow(
column(width = 2,
offset = 0,
align = "center",
sliderInput(inputId = "sld_1",
label = "weight",
min = 0,
max = 1,
value = 0.25,
step = 0.05,
animate = TRUE)
,
sliderInput(inputId = "sld_2",
label = "weight",
min = 0,
max = 1,
value = 0.25,
step = 0.05,
animate = TRUE)
,
sliderInput(inputId = "sld_3",
label = "weight",
min = 0,
max = 1,
value = 0.25,
step = 0.05,
animate = TRUE)
,
sliderInput(inputId = "sld_4",
label = "weight",
min = 0,
max = 1,
value = 0.25,
step = 0.05,
animate = TRUE)
) #slider columns
,
column(width = 9,
offset = 0,
align = "center",
conditionalPanel(
condition = "output.myCondition == FALSE",
textOutput(outputId = "distPrint")
) #conditional1
,
conditionalPanel(
condition = "output.myCondition == TRUE",
plotOutput(outputId = "distPlot")
) #conditional2
) #column
)#fluidrow
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output,session) {
dister <- reactive({
if(!is.null(input$sld_1) &&
!is.null(input$sld_2) &&
!is.null(input$sld_3) &&
!is.null(input$sld_4) &&
sum(input$sld_1,input$sld_2,input$sld_3,input$sld_4)==1
) {
rnorm(input$sld_1*1000)
} else {c(0,1,2,3,4,5)}
})
output.myCondition <- reactive({
if(!is.null(input$sld_1) &&
!is.null(input$sld_2) &&
!is.null(input$sld_3) &&
!is.null(input$sld_4) &&
sum(input$sld_1,input$sld_2,input$sld_3,input$sld_4)==1
) {
TRUE
} else {FALSE}
})
output$distPlot <- renderPlot({
x<-dister()
hist(x)
})
output$distPrint <- renderText({
print("The weights must sum to 100%")
})
}
# Run the application
shinyApp(ui = ui, server = server)
ありがとうございます。しかし、それは私が何をしているのか正確には分かりません。私はテキストやプロットを表示する必要があり、それは状態がキャプチャしようとしていたものでした。あなたが提供するコードでこのコードを置き換えると、私はまだ両方を取得します。 –
@ J.Doe。私は、上記ですでに受け入れられている答えに代わる解決策として、新しい答えを追加しました。 – SBista