Выбор строки DataTable внутри блестящего модуля

Я пытаюсь взять это простое работающее блестящее приложение и разбить его на модули. Это работает:

shinyApp(
  ui = fluidPage(
    DT::dataTableOutput("testTable"),
    verbatimTextOutput("two")
  ),
  server = function(input,output) {
    output$testTable <- DT::renderDataTable({
      mtcars
    }, selection=list(mode="multiple",target="row"))

    output$two <- renderPrint(input$testTable_rows_selected) 
  }
)

Я хочу сделать этот модуль, который будет работать с любым data.frame.

# UI element of module for displaying datatable
testUI <- function(id) {
  ns <- NS(id)
  DT::dataTableOutput(ns("testTable"))

}
# server element of module that takes a dataframe
# creates all the server elements and returns
# the rows selected
test <- function(input,output,session,data) {
  ns <- session$ns
  output$testTable <- DT::renderDataTable({
    data()
  }, selection=list(mode="multiple",target="row"))

  return(input[[ns("testTable_rows_selected")]])

}

shinyApp(
  ui = fluidPage(
    testUI("one"),
    verbatimTextOutput("two")
  ),
  server = function(input,output) {
    out <- callModule(test,"one",reactive(mtcars))
    output$two <- renderPrint(out()) 
  }
)

Это дает мне ошибки, говоря, что я пытаюсь использовать реактивность вне реактивной среды. Если я исключу оператор return, он запустится. Есть ли способ вернуть строки, выбранные из таблицы данных, в блестящем модуле? Любая помощь будет оценена по достоинству.


person Carl    schedule 16.06.2016    source источник
comment
Спасибо, ваш комментарий помог мне разобраться   -  person Carl    schedule 16.06.2016


Ответы (1)


Нужный

return(reactive(input$testTable_rows_selected))
person Carl    schedule 16.06.2016