Получите нажатые индексы DT в блестящем приложении с помощью flexdashboard - PullRequest
0 голосов
/ 04 августа 2020

Я хотел бы воспроизвести здесь раздел таблицы на стороне сервера: https://yihui.shinyapps.io/DT-rows/. Я использую flexdashboard, и я не уверен, как достичь тех же результатов.

Я хотел бы знать номер строки выбранной строки DT, чтобы я мог создать график, отображающий информацию в этой строке.

Ниже приведен пример того, что я хотел бы сделать, но с использованием набора данных mtcars. В примере отображается первая строка данных, но я бы хотел, чтобы это изменилось в зависимости от выбранной строки. Мне удобно работать с реактивами, мне просто нужна помощь в том, как записать номер выбранной строки в DT!

    ---
    title: "test"
    runtime: shiny
    output:
      flexdashboard::flex_dashboard:
        orientation: columns
        vertical_layout: fill
        theme: bootstrap
    ---

    ```{r global, include = FALSE}

    library(shiny)
    library(flexdashboard)
    library(tidyverse)
    library(DT)

    ```

    Column 
    -------

    ### Table 

    ```{r}

    renderDT(

    head(mtcars, 10),
      rownames = FALSE,
      filter='top',
      class = 'cell-border stripe',
    escape = FALSE,
    options = list(
        pageLength = 25,
        paging = FALSE,
        searchHighlight = TRUE,
        autoWidth = FALSE,
        scroller = TRUE,
        scrollX = TRUE,
        scrollY = "700px",
        fixedColumns = FALSE),
            selection = 'single'
      )


    ```

    Column 
    ---------

    ### Graph

    ```{r}


    mt1 <- mtcars[1, ]
    mt1 <- pivot_longer(mt1, everything())

    ggplot(mt1) +
      geom_col(aes(x = name, y = value))

    ```

1 Ответ

0 голосов
/ 05 августа 2020

Вам необходимо присвоить отображаемые объекты переменным output, тогда вы сможете получить доступ к выбранным строкам через input$<name>_rows_selected. Для синтаксиса см. здесь .


    ---
    title: "test"
    runtime: shiny
    output:
      flexdashboard::flex_dashboard:
      orientation: columns
    vertical_layout: fill
    theme: bootstrap
    ---
      
      ```{r global, include = FALSE}
    
    library(shiny)
    library(flexdashboard)
    library(tidyverse)
    library(DT)
    
    ```
    
    Column 
    -------
      
      ### Table 
      
      ```{r}
      
    DTOutput("table")
    
    output$table <- renderDT({
      
      datatable(head(mtcars, 10),
      rownames = FALSE,
      filter='top',
      class = 'cell-border stripe',
      escape = FALSE,
      options = list(
        pageLength = 25,
        paging = FALSE,
        searchHighlight = TRUE,
        autoWidth = FALSE,
        scroller = TRUE,
        scrollX = TRUE,
        scrollY = "700px",
        fixedColumns = FALSE),
      selection = 'single')
    })
    
    
    ```
    
    Column 
    ---------
      
      ### Graph
      
      ```{r}
    
    
    mt1 <- mtcars[1, ]
    mt1 <- pivot_longer(mt1, everything())
    
    ggplot(mt1) +
      geom_col(aes(x = name, y = value))
    
    ```
    
    ### Selected Rows
    
    ```{r}
    renderPrint({
      s = input$table_rows_selected
      if (length(s)) {
        cat('These rows were selected:\n\n')
        cat(s, sep = ', ')
      }
    })
    ```

...