关于同时使用observeEvent和EventResponsive的说明
我对反应性感到困惑,我希望你们中的一个能帮上忙 当我在代码中使用关于同时使用observeEvent和EventResponsive的说明,r,shiny,R,Shiny,我对反应性感到困惑,我希望你们中的一个能帮上忙 当我在代码中使用eventReactive时,我包含了一个涉及变量rpcMatrix的计算,该变量不会返回。(取而代之的是另一个变量,DF_new)返回。我承认这是一种草率的做事方式,但我认为没有理由不起作用 现在,变量RPC在observeEvent函数中定义。虽然RPC不是被动变量,但我相信它的值在observeEvent函数中确实会发生变化,因为wb会根据states()被动变量发生变化。当RPC发生变化时,我希望eventReactive函
eventReactive
时,我包含了一个涉及变量rpcMatrix
的计算,该变量不会返回。(取而代之的是另一个变量,DF_new
)返回。我承认这是一种草率的做事方式,但我认为没有理由不起作用
现在,变量RPC
在observeEvent
函数中定义。虽然RPC
不是被动变量,但我相信它的值在observeEvent
函数中确实会发生变化,因为wb
会根据states()
被动变量发生变化。当RPC
发生变化时,我希望eventReactive
函数会导致rpcMatrix
在for
循环中发生变化
如果两个变量都在eventReactive
中,则rpcMatrix
是否会根据RPC
中的变化而变化
我之所以避免使用reactive
关键字,是因为它给我分配wb
和loadWorkbook
命令带来了麻烦。
非常感谢你们的帮助。我希望我把问题说清楚
observeEvent(input$submit,{
#NEXT 2 LINE ARE PERTINENT TO QUESTION:
wb <<- loadWorkbook(file =file.path(src,"www","State_Vectors",states()))
...
RPC<<-read.xlsx(wb,sheet=1,startRow=1,cols=11)
})
data = eventReactive(input$submit,{
...
DF_new<<- hot_to_r(input$tbl)
*NEXT 2 LINES ARE PERTINENT TO QUESTION:
rpcMatrix<<-as.data.frame(matrix(0, nrow= dim(as.matrix(category))[1], ncol =dim(as.matrix(category))[1]))
for(i in 1:dim(category)[1]) #NTP
{
for(j in 1:dim(category)[1])
{
rpcMatrix[i,j]<<-as.matrix(RPC[i,1])
}
}
DF_new<<-DF_new[,-c(1,2,6)]
}
return(DF_new)
})
observeEvent(输入$submit{
#下两行与问题相关:
wb这个不能可靠地工作。这是有问题的,因为它需要在同一个输入$submit
上触发两个反应语句的特定执行顺序。虽然您可以设置一些优先级值,从而使其更频繁地工作,但优先级功能是unrel不可靠,不鼓励使用
但是这个“执行顺序”问题正是反应性设计所要解决的问题。我建议您考虑使用<代码> ReActualValue<代码> < < /P>
它们有两个主要特点:
- 跨反应调用的寿命正如您现在可能知道的,反应函数有自己的环境/作用域,并且您在那里创建的变量不会一直存在。一种解决方法是使用
这不能可靠地工作。这是有问题的,因为它需要specific在同一输入$submit
上触发的两条反应性语句的执行顺序。虽然您可以设置一些优先级值,从而使其更频繁地工作,但优先级功能不可靠,因此不鼓励使用
但是这个“执行顺序”问题正是反应性设计所要解决的问题。我建议您考虑使用<代码> ReActualValue<代码> < < /P>
它们有两个主要特点:
- 在被动调用中的寿命正如您现在可能知道的,被动函数有自己的环境/范围,并且您在其中创建的变量不会一直存在。一种解决方法是将
用于被动调用或eventReactive,您实际上不需要用于被动调用或eventReactive不需要
rv <- reactiveValues(wb=NULL,RPC=NULL)
observeEvent(input$submit,{
rv$wb <- loadWorkbook(file =file.path(src,"www","State_Vectors",states()))
...
rv$RPC<-read.xlsx(rv$wb,sheet=1,startRow=1,cols=11)
})
data <- reactive({
...
DF_new<- isolate(hot_to_r(input$tbl))
rpcMatrix<-as.data.frame(matrix(0, nrow= dim(as.matrix(category))[1],
ncol =dim(as.matrix(category))[1]))
for(i in 1:dim(category)[1]) #NTP
{
for(j in 1:dim(category)[1])
{
rpcMatrix[i,j]<-as.matrix(rv$RPC[i,1])
}
}
DF_new<-DF_new[,-c(1,2,6)]
}
return(DF_new)
})