Как мне создать реактивный информационный фрейм из слияния двух фреймов - PullRequest
0 голосов
/ 21 апреля 2019

У меня блестящее приложение У меня есть два кадра данных, которые создают третий кадр данных. Я хочу, чтобы пользователь выполнял различные операции на этом объединенном фрейме данных. В результате этот третий кадр данных должен быть реактивным. Кадр данных заполняется только после нажатия кнопки «Объединить»

Что я не понимаю, так это как создать реактивный фрейм данных, когда он не существует при запуске приложения.

Пока мой код:

ui.R

fluidPage(tabsetPanel(type = "tabs",
 tabPanel("Merged Dataset", tableOutput("table2"),
           actionButton("Endomerge2",label = "Endomerge2"),
           DT::dataTableOutput("pathTable"),
           DT::dataTableOutput("endoTable"),
           DT::dataTableOutput("mergedTable")
  )
))

server.R

library(shiny)

RV <- reactiveValues(data = DataToMerge1)
RV2 <- reactiveValues(data = DataToMerge2)
RV3<-reactiveVal(0)



server <- function(input, output) {      
  output$endotable = DT::renderDT({
    RV$data
  })
  output$pathTable = DT::renderDT({
    RV2$data
  })
  output$mergedTable = DT::renderDT({
    RV3$data
  })



 #Button to merge the dataframes on

    observeEvent(input$Endomerge2,{
    RV3$data<-Endomerge2(RV$data,"AcolumnToMerge",RV2$data,"AcolumnToMerge")
  },ignoreInit = TRUE)

}

В настоящий момент я получаю ошибку типа замыкания, которая не является поднаборной, но я подозреваю, что она просто скрывает большую ошибку. Итак, как я могу создать новый фрейм данных и показать его в новой таблице данных в Shiny?

1 Ответ

1 голос
/ 21 апреля 2019

reactiveVal() создает одно реактивное значение, а не список, поэтому вы не можете добавить элемент списка с именем data.Попробуйте это:

RV <- reactiveValues(data = DataToMerge1)
RV2 <- reactiveValues(data = DataToMerge2)
RV3 <- reactiveValues(data = data.frame())



server <- function(input, output) {      
  output$endotable = DT::renderDT({
    RV$data
  })
  output$pathTable = DT::renderDT({
    RV2$data
  })
  output$mergedTable = DT::renderDT({
    RV3$data
  })



 #Button to merge the dataframes on

    observeEvent(input$Endomerge2,{
    RV3$data<-Endomerge2(RV$data,"AcolumnToMerge",RV2$data,"AcolumnToMerge")
  },ignoreInit = TRUE)

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...