Может кто-нибудь объяснить, как работает DT :: dataTableProxy? - PullRequest
0 голосов
/ 03 марта 2019

Я пытался понять, как заставить DT :: dataTableProxy Использовать DT в Shiny работать в моем приложении, но я не могу пройти, возвращая выбранные столбцы.

ПослеНапример, здесь , я попытался изменить код для печати описательной статистики (используя pastecs).Но единственное, что отрисовывается, это выделенный буквенный столбец.

#modified UI, adding another verbatimTextOutput

ui = 
...
verbatimTextOutput('foo2')

server = 
...
  output$foo2= renderPrint({
    x<-input$foo_columns_selected
    stat.desc(x)
  })

результат: Image of ShinyApp

Что я хотел бы сделать, это получитьзначения выбранного столбца и запустите функцию stat.desc.В приведенном выше примере он будет выполняться в столбце 2 (Sepal.Width) и отображать описательную статистику.Например:

console command and desired reactive output

В дальнейшем я хотел бы, чтобы stat.desc было выполнено для визуализированной DataTable из нескольких selectInputs.Но .. один шаг за один раз.Сначала я хочу понять, как получить фактические значения для выполнения функций.

Обновить!

Итак, я думаю, что я понял, как успешно выполнить то, что мне нужно. любит , если другой пользователь сможет проверить, что он работает правильно:

Обновлен скрипт:

require(DT)
library(dplyr)
library(tibble)

ui<-
  fluidPage(

    selectInput('obj','Choose Name:', choices = c('',my.data$Name), selectize = TRUE),
    dateRangeInput('daterange',"Date range:",
                   start= min(my.data$Date),
                   end = max(my.data$Date)),

    mainPanel(
      dataTableOutput('filteredTable'),
      dataTableOutput('filteredTable2'),
      tableOutput('table')
    )
)

server<-function(input,output, session){



  filteredTable_data <- reactive({

    my.data %>% rownames_to_column() %>%  ##dplyr's awkward way to preserve rownames

      filter(., Name == input$obj) %>%
      filter(., between(Date ,input$daterange[1], input$daterange[2])) %>%
      column_to_rownames()

    })

##explicit assignment to output ID

  DT::dataTableOutput("filteredTable")

  output$filteredTable <- DT::renderDataTable({

    datatable(

      filteredTable_data(),

      selection = list(mode = "multiple"),

      caption = "Filtered Table (based on cyl)"

       )

    })

  filteredTable_selected <- reactive({
    ids <- input$filteredTable_rows_all
    filteredTable_data()[sort(ids),]  ##sort index to ensure orig df sorting
  })

  ##anonymous
  output$filteredTable2<-DT::renderDataTable({

    x<-filteredTable_selected() %>% select(starts_with("Value"))

    x<-as.data.frame(stat.desc(x))

    datatable(
      x)

  })

}

shinyApp(ui, server)

Результат:

Par1 Part2 Part3 Part4

Следующие ответы помогли безмерно : Чтение объектов из блестящего выходного объекта не разрешено? & Как получить данные из выбранных строк отфильтрованной таблицы данных (DT)?

...