首页 > 解决方案 > R Shiny 服务器变量定义。修改后的值不反映

问题描述

可能是一个基本问题。但是在网上找不到解决方案。

问题是我想在server.r下面定义一个变量

function(input, output, session) {

  currentrunid <- ""

然后在一个submit按钮上单击我想为它分配一个值。

  observeEvent(input$submit, {
    currentrunid <- 1234  #Its dynamic

然后status单击按钮,我想检索变量的值。该变量用于检索作为提交的一部分生成的文件。

observeEvent(input$checkstatus,{
   runid <- currentrunid
   Getoutputfiles(runid) 

但问题是在提交按钮上分配的值在状态按钮单击时不可用。

试过session$currentrunid <- 1234但出现如下错误 cannot add bindings to a locked environment

我用过<<-但是有人建议我不应该使用这个,相反,我应该使用reactive变量。但还不能成功实施。

请让我知道这里的最佳做法是什么。或者如何实现reactive

标签: rshinyreactive

解决方案


我不明白你想做什么,所以我不确定这个答案是否合适。也许您需要一个反应值,如下所示:

function(input, output, session) {

  currentrunid <- reactiveVal()

  observeEvent(input$submit, {
    currentrunid(1234) # this assigns 1234 
  })

  # to get the value, do currentrunid(), for example:
  observe({
    print(currentrunid())
  })

  ......

推荐阅读