Может кто-нибудь посоветовать мне хорошие уроки для 'Track change' в R-Shiny? - PullRequest
0 голосов
/ 09 июля 2019

Два дня назад я столкнулся с вопросом об интервью по поводу Shiny смены трека. Я не был знаком с этим термином. В Excel мы можем редактировать все записи в любой строке и сохранять их. В ShinyUI, когда мы отображаем некоторые данные, есть ли какое-либо положение, что на самом дисплее (Shiny table) я могу изменить число или текст и сохранить его на том же самом дисплее? Также у меня будет история того, что было предыдущими значениями и каково значение cahnged.

Мне нужно больше узнать по этой теме, пожалуйста, дайте мне несколько хороших ссылок на учебники для Shiny Track-Change. enter image description here

Интервьюер сказал мне, что в Шины это называется 'Track Change'. Я искал Google, но не мог найти удовлетворительное руководство по тому же.

У меня есть демонстрационное блестящее приложение [ Как редактировать загруженные данные в rshiny , где я могу видеть загруженные данные. Проверьте изображение. В Shiny, какие изменения мне нужно внести в UI & Server, чтобы иметь возможность редактирования, например, изменение дорожки?

library(shiny)
library(readxl)

ui = fluidPage( 

  titlePanel("HEllo world"),
  sidebarLayout(
    sidebarPanel(

      fileInput('file1', 'Choose xlsx file',
                accept = c(".xlsx")),
      actionButton("go", "update"),
      numericInput('NewVal', 'Enter new Frequency',NULL),
      numericInput('NewExp', 'Enter new Exposure',NULL),

      # Download button (goes with download handler below)
      # Use if desire is to save at press of button
      downloadButton("save", "Download")
    ),

    mainPanel(
      textInput('ID', 'Enter ID'),
      dataTableOutput('contents')
    )
  )
)

server = function(input,output){
  # Reactive value to save input data frame for use elsewhere
  original <- reactiveValues()

  observeEvent(input$file1, {
    theFile <- input$file1
    if(is.null(theFile)) {
      original$oldData <- NULL
    } else {
      original$oldData <- read_excel(theFile$datapath, 1)      
    }
  })

  observeEvent(input$go, {

    original$newData <- original$oldData
    if(input$ID !="") {
      for(i in 1:nrow(original$oldData)){

        if(input$ID == original$oldData$'ID'[i]){

          if(!is.na(input$NewVal)){
            original$newData$'Frequency'[i] <- input$NewVal
          }

          if(!is.na(input$NewExp)){
            original$newData$'Exposure'[i] <- input$NewExp
          }
          original$newData$'Value'[i] <- (original$newData$'Exposure'[i]*
                                            original$newData$'Frequency'[i])
        }
      }

      original$oldData<-original$newData  
    }

  })

  output$contents <- renderDataTable({
    if(!is.null(original$newData)) {
      original$newData}
    else {
      original$oldData
    }
  })

  ### Use this code below if desired saving is through download button
  # Server code for download button
  output$save <- downloadHandler(
    filename = function() {
      paste0("newData - ", Sys.Date(), ".csv")
    },

    content = function(con) {
      if (!is.null(original$newData)) {
        dataSave <- original$newData
      } else {
        dataSave <- original$oldData
      }
      con <- ## Desired save location... could just use `getwd()` to
        # save to working directory
        write.csv(dataSave, con)
    }
  )

}


shinyApp(ui = ui, server = server)

Мне нужно больше узнать по этой теме, пожалуйста, дайте мне несколько хороших ссылок на учебники для Shiny Track-Change.

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