Есть ли способ преобразовать блестящий объект dataTableProxy в объект R data.frame? - PullRequest
0 голосов
/ 15 октября 2019

Я новичок в пакете Shiny R и пытаюсь сделать так, чтобы я мог открыть data.frame через dataTableOutput, изменить его в сеансе Shiny, а затем сохранить эту модификацию как объект R data.frame.

Я уже смог поместить data.frame "dados" в сессию и изменить его с помощью пакета DT. При каждом нажатии кнопки «Обновить» таблица данных прокси изменяется;Я пытаюсь сделать так, чтобы дадос тоже обновлялся. Я думаю, что функция hot_to_r пакета rhandsontable помогла бы, но я не мог понять, как заставить это работать. Ниже у меня есть код того, что работает.

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

ui <- bootstrapPage(
  div(style="display:inline-block",textInput(inputId="input1", label="Input 1", value = "Input 1")),
  div(style="display:inline-block",textInput(inputId="input2", label="Input 2", value = "Input 2")),
  dataTableOutput("tabela"),
  actionButton("update", "Update View")
)

server <- function(input, output) {

  dados <- read.csv(text = "name, birth")
  dados[nrow(dados)+1,] <- c("name", "birth")

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

  output$tabela <- renderDataTable(
    dados
    , server = FALSE
    , editable = TRUE
    , options = list(lengthChange = TRUE)
    , rownames = FALSE)

  proxy <- dataTableProxy(outputId = "tabela")

  observeEvent(eventExpr = input$update, {
    proxy %>% 
      addRow(new_name(c(input$input1, input$input2)))
    #update dados here
  })

}

shinyApp(ui = ui, server = server)

Ожидаемые результаты были получены для data.frame, открытого и измененного в сеансе Shiny, чтобы соответствовать таблице данных сеанса.

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