zoukankan      html  css  js  c++  java
  • shiny的核心是通知机制

    上课学了最最基本的 shiny 的知识. 说点感受.

    reactiveValues, 我们为什么一定得用它? 难道就不能用普通的 R 对象么? 当然可以. 如果一个表达式不依赖任何 input 和 output, 它就可以不在交互函数中. 首先先说 reactive 是怎样的存在, 它其实就是依赖 input 的 R 表达式. reactiveValues 也是同理, 但它更灵活. 它可以在别处用, 主要是在 observeEvent 这类监听函数中, 否则它交互的作用就发挥不了了.

    比如

    library(shiny)
    ui <- fluidPage(
      actionButton("unif","Uniform"),
      actionButton("norm", "Normal"),
      plotOutput("hist")
    )
    
    server <- function(input, output) {
      rv=list(data=runif(100)) # 本来是rv=reactiveValues(data=rnorm(100))
      rv$title = "Normal Distribution"
      observeEvent(input$unif, {rv$data = runif(100) 
      rv$title = "Uniform Distribution"})
      observeEvent(input$norm, {rv$data = rnorm(100)
      rv$title = "Normal Distribution"})
      output$hist = renderPlot(hist(rv$data, main=paste("Histogram of",rv$title)))
    }
    
    shinyApp(ui = ui, server = server)
    

    它的结果是, 无论点击什么按钮, 都不会改变. 为什么会这样? observeEvent 的确让 rv 发生了变化. 但 renderPlot 却并不知道.

    据此, 我认为 shiny 的 server 核心是如何传递数据的

  • 相关阅读:
    nginx 添加模块
    zabbix监控nginx status页面
    查看crontab执行记录
    mysql常见问题处理
    iftop简单使用
    TCP的状态及变迁
    CF1174F
    luoguP6326 Shopping
    【THUWC2020】工资分配
    CF1336简要题解
  • 原文地址:https://www.cnblogs.com/Tokubara/p/14073910.html
Copyright © 2011-2022 走看看