将在 onRender() 函数中创建的对象保存在 htmlWidgets 中

用户2808302

我在 Shiny 应用程序中使用 htmlWidgets 包中的 onRender() 函数。我试图保存我在给定的 onRender() 函数调用中创建的某些对象,以便它们可以在给定的 onRender() 函数调用之外使用。

下面是我的 MWE。我正在 onRender() 函数中创建一个名为 val2 的对象,它只是滑块输入值乘以 2。我可以保存 val2 对象,以便以后可以在 onRender() 函数之外使用它吗?(我意识到在这个过于简化的示例中我不需要使用 onRender() 函数来创建 val2 对象,但我试图使示例保持简单)。

感谢您的任何建议!

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)
迈克·怀斯

这样做。我修改了您的示例,使其更具交互性。然后我使用 javascript 将“val2”值存储两次,一次在 h3 标签中(我首先开始工作),然后作为反应input列表的元素(当然这更有用)。请注意,这似乎不是很有效,因为值在服务器和客户端之间来回传递。

这是代码:

library(plotly)
library(htmlwidgets)
library(shiny)

ui <- shinyUI(fluidPage(
  tags$h3('',class ='val2'),
  sliderInput("ci", "Value:", min = 0, max = 34, value=34, step=1),
  plotlyOutput("myPlot"),
  textOutput("outval2")
))

server <- shinyServer(function(input, output) {

  ci <- reactive(input$ci)

  output$myPlot <- renderPlotly({
            mdf <- mtcars %>% filter(mpg<ci())
            myPlot <- qplot(data=mdf, mpg, cyl)
            ggplotly(myPlot) %>% onRender("function(el, x, data) {
                                            val2 = data * 2
                                            console.log(val2)
                                            $('h3.val2').text('val2:'+val2);
                                            Shiny.onInputChange('val2', val2);
                                            }", data=ci())
            })
  output$outval2 <- renderPrint({sprintf("The calculated value is:%d",input$val2)})
  }
)
shinyApp(ui, server)

这是工作应用程序的屏幕截图:

在此处输入图片说明

值得一读的相关帖子是:从客户端发送闪亮数据到服务器

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

直接在htmlWidgets的onRender()函数中显示闪亮的反应值

htmlwidgets在html中并排?

使Rmarkdown中的htmlwidgets移动友好

在 rmarkdown 中渲染 fusionchartsR htmlwidgets

从sendCustomMessage()在htmlwidgets / plotly对象中定义hoverinfo

在React Native中执行功能OnRender

Ractive.js中的onrender vs init

将在函数中创建的对象分配给成员变量

将在Qcombobox中所做的选择保存在pyqt中

将在画布上绘制的图像的坐标保存在变量/对象-HTML5中

应用JScode删除带有htmlwidgets :: onRender()的视图框时,通过renderUI的sankeyNetwork消失了

创建将在VSTS中后台运行的命令

使用 Audio 对象将在 iframe 中创建的音频静音

main(++ i)将在C中返回什么

getSignedUrl中的网址将在几周后过期

autoloader期望的类将在文件中定义

播放事件将在videojs中无限循环

Sinon将在测试中添加AngularJS服务

svg将在Microsoft Edge中扩展

通过变量将在MAKEFLAGS中扩展

检查任务是否将在Gradle中运行

使用 '!' 的问题 将在以后的版本中删除

如何创建将在Python中创建进程的for循环?

对函数中变量的更改将在该函数退出时还原

在 python 中创建一个函数,它将在 Pandas 数据框中估算均值或中值

仅将在C ++中定义了operator +的对象作为参数

如何分配将在 C# 中确定运行的对象

将在Blender中创建的资产导入Unity的问题

如何创建将在Servant中的任何路径上触发的路由?