Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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
关于同时使用observeEvent和EventResponsive的说明_R_Shiny - Fatal编程技术网

关于同时使用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) 
      })