Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 闪亮-反应性环境是否可能?_R_Shiny_Reactive Programming - Fatal编程技术网

R 闪亮-反应性环境是否可能?

R 闪亮-反应性环境是否可能?,r,shiny,reactive-programming,R,Shiny,Reactive Programming,现在,我有一个表达式如下所示: 您可以使用app.R文件直接运行此操作。它是独立的,演示了我想要的效果 library(shiny) rval <- reactiveValues() rval$var <- new.env() rval$flag <- FALSE isolate({ rval$var$a <- 1 rval$var$b <- "Hello" rval$var$c <- c(1.2, 12.3, 123.0) rval$v

现在,我有一个表达式如下所示:

您可以使用
app.R
文件直接运行此操作。它是独立的,演示了我想要的效果

library(shiny)


rval <- reactiveValues()
rval$var <- new.env()
rval$flag <- FALSE

isolate({
  rval$var$a <- 1
  rval$var$b <- "Hello"
  rval$var$c <- c(1.2, 12.3, 123.0)
  rval$var$d <- list(1,2,"A")
})

ui <- navbarPage('reactiveTest',
  tabPanel('Analysis',
    fluidRow(
      actionButton("addVar", "Add a NULL var"),
      tableOutput('vars')
    ) 
  )
)

core_variable_table <- eventReactive(rval$flag == TRUE, {
  print(ls(rval$var))
  rval$flag <- FALSE

  df <- data.frame(ls(rval$var),
                   sapply(ls(rval$var), function(x){ class(get(x, envir = rval$var))}),
                   sapply(ls(rval$var), function(x){
                     y <- head(get(x, envir = rval$var))
                     if(is.null(y)) {
                       return("NULL")
                     } else {
                       return(toString(y))
                     }
                   })
  )
  rownames(df) <- seq(1, length(ls(rval$var)))
  colnames(df) <- c('Name', 'Type', 'Content')

  return(df)
})

dothis <- function(name, data) {
  observe({
    assign(x=name,
           value=data,
           envir=rval$var)
  })

  isolate({
    rval$flag <- TRUE
  })
}

server <- function(input, output, session) {
  output$vars <- renderTable({
      return(core_variable_table())
  })

  observeEvent(input$addVar, {
    rval$update
    dothis("gecko", NULL)
  })

}

shinyApp(ui, server)
库(闪亮)

rval我提出的解决方案是基于标志或整数增量生成环境视图。例如,如果我修改了环境中的任何变量,我会手动更改一个反应性变量,该变量向需要更新的应用程序的输出发送信号。

我提出的解决方案是基于标志或整数增量生成环境视图。例如,如果我修改了环境中的任何变量,我会手动更改一个反应变量,该变量会向应用程序的输出发送需要更新的信号