光沢のある反応式は、必要なところで変化を伝播します。 isolate
でこの動作の一部を抑制できますが、私たち自身の論理式に基づいて変更が伝播するのを抑止できますか?条件付き反応性シャイニー
私が与える例は、単純な散布図であり、ユーザがクリックする十字線をabline
で描画します。残念ながら、Shinyは結果を新しいプロットと見なし、クリック値はNULL
...にリセットされます。これは通常どおり伝搬される値の更新として扱われます。プロットは再描画され、NULL
が両方の引数のabline
に渡されます。
クリック数が0以外の場合にのみ、プロット座標の非反応変数を更新する条件をrenderPlot
呼び出しに配置することです(下にコメントアウトします)。NULL
これは簡単なプロットではうまく動作しますが、実際にはプロットが2度描かれます。
これを行うにはどのような方法が良いですか? が正しいですか?方法はありますか?
Serverファイル:
library(shiny)
shinyServer(function (input, output)
{
xclick <- yclick <- NULL
output$plot <- renderPlot({
#if (!is.null(input$click$x)){
xclick <<- input$click$x
yclick <<- input$click$y
#}
plot(1, 1)
abline(v = xclick, h = yclick)
})
})
UIファイル:
library(shiny)
shinyUI(
basicPage(
plotOutput("plot", click = "click", height = "400px", width = "400px")
)
)
あなた 'if'ステートメントはこの例であなたがやりたいように見えるので、 –
' renderPlot'はあなたやりたい、やや静的では動作しない場合の例を提供するためには良いかもしれません'rCharts'や' highcharter'のようなより進んだライブラリを使うべきです。 –
[this](http://shiny.rstudio.com/reference/shiny/latest/actionButton.html)のように? – alistaire