【发布时间】:2013-09-29 11:33:26
【问题描述】:
我正在尝试从 R 的数据库中动态构建数据集。下面是我用于相同的代码,但在运行它时出现错误。应用程序正在闪亮运行。
query <- "select * from rdataset" # [col-2]dataset name [col-3]Query
qresult<- dbGetQuery(con,query)
dataset <- reactiveValues()
for (i in 1:nrow(qresult)) {
qresult1 <- dbGetQuery(con,qresult[i,3]) # fetching the data from db
dataset$qresult[i,2] <- qresult1 #assigning it to dataset so that it can be used later
}
#dataset$MOH<- qresult1 # this line works
运行时出现以下错误
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 function.)
【问题讨论】:
-
此错误通常表明您正在尝试使用以某种方式依赖于来自用户 (ui.r) 的输入的东西(向量、data.frame 等)而不将其放入反应式表达式中.其中哪一部分是从 ui.r 输入的?可以贴一下ui文件的相关部分吗?
-
是
dataset$qresult触发了这个,至少在我看来是这样的。您可以在反应代码之外分配给dataset$foo。你不能做的是阅读dataset$foo。我认为在这种情况下,即使您尝试改变 dataset$qresult,它也算作读取和写入。无论如何,这通常是一个坏主意,我们为dataset$foo <- 1设计而不是dataset$foo[1] <- 1或dataset$foo$baz <- 1。即使这样有效,我也不确定它是否会触发反应。 -
我会做的是在一个普通的旧变量中构建
qresult,然后在完成后将其分配给dataset。 -
问题在于 dataset$qresult[i,2]
标签: r shiny shiny-server