Shinyアプリケーション内のhtmlWidgetsパッケージからonRender()関数を使用しています。私は特定のonRender()関数呼び出しの中で作成する特定のオブジェクトを保存しようとしているので、それらはonRender()関数呼び出しの外側で使用できるようになっています。htmlWidgetsでonRender()関数で作成されたオブジェクトを保存する
以下は私のMWEです。私はonRender()関数でval2というオブジェクトを作成しています。これはスライダーの入力値に2を掛けたものです。val2オブジェクトを保存して、後でonRender()関数の外で使用できるようにすることはできますか? (私は、この単純化された例ではval2オブジェクトを作成するためにonRender()関数を使う必要はないが、この例を単純にしています)。
ありがとうございました!
library(plotly)
library(htmlwidgets)
library(shiny)
myPlot <- qplot(data=mtcars, mpg, cyl)
gMyPlot <- ggplotly(myPlot)
ui <- shinyUI(fluidPage(
sliderInput("ci", "Value:", min = 0, max = 1, value=0.95, step=0.01),
plotlyOutput("myTest")
))
server <- shinyServer(function(input, output) {
ci <- reactive(input$ci)
output$myTest <- renderPlotly(gMyPlot %>% onRender("
function(el, x, data) {
val2 = data * 2
console.log(val2)
}", data=ci()))})
shinyApp(ui, server)
すべてのフィードバック私のために? –
ありがとうございます。非常に役立ちます!私の本当の問題(MWEだけではない)に取り組んでいるようですので、今私はコーディングに関する質問がないと思います。概念としては、サーバーとクライアントの間で値を前後に移動することが非効率的であることに注意すると、これは特定の状況(大きなデータセットなど)で特に問題があると思われますか?それは私のためにかなり速く働いているようですが、パフォーマンスが危険にさらされるような非効率的なアプリケーションがあるかどうかを知っていただければ幸いです。ありがとうございました。 – luckButtered
shinyServerからクライアントに細いパイプを介して大きなデータ構造を渡していたのでは、間違いなく問題になる可能性があります。しかし、あなたがPC上で、あるいはLAN経由でも使っているのであれば、私は心配しません。 –