Добавить новую пустую строку в таблице Shiny нажатием кнопки - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь создать простой инструмент и наткнулся на добавление строк.Это мой представитель.

Мои данные

structure(list(Date = c("3/1/2019", "3/2/2019"), Project = c("Death Star", 
"Jedi Order"), Lead = c("Darth Vader", "Yoda"), Status = c("Demolished", 
"Retired"), Comment = c("Awaiting confirmation", "Success")), class = 
c("spec_tbl_df", 
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -2L), spec = 
structure(list(
cols = list(Date = structure(list(), class = c("collector_character", 
"collector")), Project = structure(list(), class = c("collector_character", 
"collector")), Lead = structure(list(), class = c("collector_character", 
"collector")), Status = structure(list(), class = c("collector_character", 
"collector")), Comment = structure(list(), class = c("collector_character", 
"collector"))), default = structure(list(), class = c("collector_guess", 
"collector")), skip = 1), class = "col_spec")) 

Мой глобальный код

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

test <- read_csv("Test.csv")

МойКод пользовательского интерфейса

shinyUI(fluidPage(
    titlePanel("Star Wars Monitoring Tool"), 
    tags$div(

    uiOutput("data"), 
    actionButton("addData", "Add Data"),
    DTOutput('tbl')

    )))

Код моего сервера

server <- function(input, output) {

output$tbl <- renderDT(
test, editable = TRUE,
options = list(lengthChange = TRUE)
)}

Мой текущий пользовательский интерфейс выглядит следующим образом

enter image description here

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

test[nrow(test) + 1,] = list("Date", "Project", "Lead", "Status", "Comment")

Как улучшить сервер, позволяя добавлять строки с каждым кликом?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 03 июня 2019

Для лучшего ответа код можно упростить с помощью replace():

# store 'empty' tibble
user_table <-
  test %>% 
  slice(1) %>% 
  replace(values = "")
0 голосов
/ 04 марта 2019

Обзор

После визуализации таблицы в приложении Shiny вы можете использовать прокси-объект, возвращенный из DT::dataTableProxy(), чтобы манипулировать им 1 .На основе сценария Yihui server.R каждый раз, когда пользователь нажимает кнопку Add Data, появляется «пустая» строка, в которой пользователь дважды щелкает интересующую ячейку и добавляет данные,по одной строке за раз.

SS of Add Data Button

server.R script

# create server ----
server <- function(input, output) {

  # store 'empty' tibble
  user_table <-
    test %>% 
    slice(1) %>% 
    # transpose the first row of test into two columns
    gather(key = "column_name", value = "value") %>%
    # replace all values with ""
    mutate(value = "") %>%
    # reshape the data from long to wide
    spread(column_name, value) %>%
    # rearrange the column order to match that of test
    select(colnames(test))

  # display test as is
  output$tbl <- 
    renderDT(test
             , server = FALSE
             , editable = TRUE
             , options = list(lengthChange = TRUE)
             , rownames = FALSE)

  # store a proxy of tbl 
  proxy <- dataTableProxy(outputId = "tbl")

  # each time addData is pressed, add user_table to proxy
  observeEvent(eventExpr = input$addData, {
    proxy %>% 
      addRow(user_table)
  })

}

Информация о сеансе

sessioninfo::session_info()

─ Session info ───────────────────────────────────────────────────
 setting  value                       
 version  R version 3.5.2 (2018-12-20)
 os       macOS High Sierra 10.13.6   
 system   x86_64, darwin15.6.0        
 ui       RStudio                     
 language (EN)                        
 collate  en_US.UTF-8                 
 ctype    en_US.UTF-8                 
 tz       America/Chicago             
 date     2019-03-03                  

─ Packages ───────────────────────────────────────────────────────
 package     * version date       lib source        
 assertthat    0.2.0   2017-04-11 [1] CRAN (R 3.5.0)
 backports     1.1.3   2018-12-14 [1] CRAN (R 3.5.0)
 bindr         0.1.1   2018-03-13 [1] CRAN (R 3.5.0)
 bindrcpp    * 0.2.2   2018-03-29 [1] CRAN (R 3.5.0)
 broom         0.5.1   2018-12-05 [1] CRAN (R 3.5.0)
 cellranger    1.1.0   2016-07-27 [1] CRAN (R 3.5.0)
 cli           1.0.1   2018-09-25 [1] CRAN (R 3.5.0)
 colorspace    1.3-2   2016-12-14 [1] CRAN (R 3.5.0)
 crayon        1.3.4   2017-09-16 [1] CRAN (R 3.5.1)
 crosstalk     1.0.0   2016-12-21 [1] CRAN (R 3.5.0)
 digest        0.6.18  2018-10-10 [1] CRAN (R 3.5.0)
 dplyr       * 0.7.8   2018-11-10 [1] CRAN (R 3.5.0)
 DT          * 0.5     2018-11-05 [1] CRAN (R 3.5.0)
 fansi         0.4.0   2018-10-05 [1] CRAN (R 3.5.0)
 forcats     * 0.3.0   2018-02-19 [1] CRAN (R 3.5.0)
 generics      0.0.2   2018-11-29 [1] CRAN (R 3.5.0)
 ggplot2     * 3.1.0   2018-10-25 [1] CRAN (R 3.5.0)
 glue          1.3.0   2018-07-17 [1] CRAN (R 3.5.0)
 gtable        0.2.0   2016-02-26 [1] CRAN (R 3.5.0)
 haven         2.0.0   2018-11-22 [1] CRAN (R 3.5.0)
 hms           0.4.2   2018-03-10 [1] CRAN (R 3.5.0)
 htmltools     0.3.6   2017-04-28 [1] CRAN (R 3.5.0)
 htmlwidgets   1.3     2018-09-30 [1] CRAN (R 3.5.0)
 httpuv        1.4.5.1 2018-12-18 [1] CRAN (R 3.5.0)
 httr          1.4.0   2018-12-11 [1] CRAN (R 3.5.0)
 jsonlite      1.6     2018-12-07 [1] CRAN (R 3.5.0)
 later         0.7.5   2018-09-18 [1] CRAN (R 3.5.0)
 lattice       0.20-38 2018-11-04 [1] CRAN (R 3.5.2)
 lazyeval      0.2.1   2017-10-29 [1] CRAN (R 3.5.0)
 lubridate     1.7.4   2018-04-11 [1] CRAN (R 3.5.0)
 magrittr      1.5     2014-11-22 [1] CRAN (R 3.5.0)
 mime          0.6     2018-10-05 [1] CRAN (R 3.5.0)
 modelr        0.1.2   2018-05-11 [1] CRAN (R 3.5.0)
 munsell       0.5.0   2018-06-12 [1] CRAN (R 3.5.0)
 nlme          3.1-137 2018-04-07 [1] CRAN (R 3.5.2)
 pillar        1.3.1   2018-12-15 [1] CRAN (R 3.5.0)
 pkgconfig     2.0.2   2018-08-16 [1] CRAN (R 3.5.0)
 plyr          1.8.4   2016-06-08 [1] CRAN (R 3.5.0)
 promises      1.0.1   2018-04-13 [1] CRAN (R 3.5.0)
 purrr       * 0.2.5   2018-05-29 [1] CRAN (R 3.5.0)
 R6            2.3.0   2018-10-04 [1] CRAN (R 3.5.0)
 Rcpp          1.0.0   2018-11-07 [1] CRAN (R 3.5.0)
 readr       * 1.3.1   2018-12-21 [1] CRAN (R 3.5.0)
 readxl        1.2.0   2018-12-19 [1] CRAN (R 3.5.0)
 rlang         0.3.1   2019-01-08 [1] CRAN (R 3.5.2)
 rsconnect     0.8.13  2019-01-10 [1] CRAN (R 3.5.2)
 rstudioapi    0.9.0   2019-01-09 [1] CRAN (R 3.5.2)
 rvest         0.3.2   2016-06-17 [1] CRAN (R 3.5.0)
 scales        1.0.0   2018-08-09 [1] CRAN (R 3.5.0)
 sessioninfo   1.1.1   2018-11-05 [1] CRAN (R 3.5.0)
 shiny       * 1.2.0   2018-11-02 [1] CRAN (R 3.5.0)
 stringi       1.2.4   2018-07-20 [1] CRAN (R 3.5.0)
 stringr     * 1.3.1   2018-05-10 [1] CRAN (R 3.5.0)
 tibble      * 2.0.1   2019-01-12 [1] CRAN (R 3.5.2)
 tidyr       * 0.8.2   2018-10-28 [1] CRAN (R 3.5.0)
 tidyselect    0.2.5   2018-10-11 [1] CRAN (R 3.5.0)
 tidyverse   * 1.2.1   2017-11-14 [1] CRAN (R 3.5.0)
 utf8          1.1.4   2018-05-24 [1] CRAN (R 3.5.0)
 withr         2.1.2   2018-03-15 [1] CRAN (R 3.5.0)
 xml2          1.2.0   2018-01-24 [1] CRAN (R 3.5.0)
 xtable        1.8-3   2018-08-29 [1] CRAN (R 3.5.0)
 yaml          2.2.0   2018-07-25 [1] CRAN (R 3.5.0)

[1] /Library/Frameworks/R.framework/Versions/3.5/Resources/library

1 Управление существующим экземпляром DataTables

...