从1个反应式脚本渲染2个输出

时间:2018-11-30 01:34:49

标签: r shiny shiny-reactivity

我发现this与从反应式脚本获取多个输出有关,但这仍然假设两者都将在最终输出的同一对象中使用。但是,即使我能正常工作,我也担心使用来自2个不同的renderSomething({})函数的这些输出将意味着我的反应性脚本每次必须运行两次。

我的原始代码很长,所以我只列出问题所在:

#main function
    server<-function(input, output){
    main<-reactive({

    #a bunch of stuff producing what it needed for output

    if(nglabels>0){
        #return number of labelings:
        outputText<-paste("Graph has",nglabels,"graceful labelings",sep=" ",collapse=NULL)
        #return FedgeLabel for graph:
        outputGraph<-graph_from_adjacency_matrix(FedgeLabel,mode=c("undirected"),weighted=TRUE,add.colnames=FvertexLabel,add.rownames=FvertexLabel)
      } else {
        outputText<-"No graceful labels"
        #return imported graph as-is
        outputGraph<-graph_from_adjacency_matrix(mat,mode=c("undirected"))
      }
      #reactive in R only allows 1 output, so we need to make a list of these:
      outputList<-list(outputText=outputText,outputGraph=outputGraph)
      return(outputList)
      })
#outputting what was calculated
    output$txt<-renderText({
        getOutput<-main()
        getOutput$outputText})
    output$Graph<-renderPlot({
        getOutput<-main()
        plot(getOutput$outputGraph)})
    } #this is the end brace from the server function

当然,到目前为止,都无法正确返回,但是鉴于计算时间可能会因输入而变大,我宁愿找到一种优雅的方法来仅从一个反应函数中获取输出。

0 个答案:

没有答案