首页 > 解决方案 > 可以将 S4 对象设置为反应变量吗?

问题描述

我正在开发一个闪亮的应用程序,我想将 S4 对象设置为全局变量。但我收到一条错误消息:

Error in .getReactiveEnvironment()$currentContext() : 
  Operation not allowed without an active reactive context. (You tried to do something that can only be done from inside a reactive expression or observer.)

我想知道是否不能将 S4 对象设置为闪亮的反应值。

我的代码在这里

ensemblObj=reactiveValues()
ensemblObj$ensembl=useMart(biomart='ensembl')
ensemblObj$archieves=listEnsemblArchives()
ensemblObj$specials=listDatasets(ensemblObj$ensembl)

错误发生在最后一行。useMart(biomart='ensembl') 将创建一个链接到服务器的对象,并且 listDatasets(ensemblObj$ensembl) 想要从服务器获取所有可用的数据集。

标签: rshinyreactive

解决方案


尝试在反应式环境中执行此操作,例如

ensembleObj <- reactive({
  out <- list()
  out$ensembl = useMart(biomart = 'ensembl')
  out$archieves = listEnsemblArchives()
  out$specials = listDatasets(out$ensembl)

  out
})

推荐阅读