簡體   English   中英

根據數字輸入更改r數據表中的列值

[英]Change column values in r datatable based on numeric inputs

我想讓用戶看到輸入中的更改直接反映在表上。 因此,只要用戶更改輸入數值lower ,其應反映在表中列lower_rate的變化,也乘以該數值與low_val 這對於數字輸入更改時observeEvent是否可行。

input_data <- data.frame(lower_rate = c (.5, .5, .5),
                         low_val = c(10,11,12),
                         upper_rate = c(1.5, 1.5, 1.5),
                         upp_val = c(20,21,22),
                         stringsAsFactors = FALSE) 

ui <- shinyUI(
  fluidPage(
    titlePanel("Basic DataTable"),



    # Create a new row for the table.
    fluidRow(
      column(12,

             numericInput("low", label = h3("lower"), value = 0.5),
             numericInput("up", label = h3("Upper"), value = 1.5),
             dataTableOutput(outputId="table")
      )
    )    
  )  
)

server <- shinyServer(function(input, output) {
  d <- reactive({
    input_data
  })

  dat <- reactiveValues(dat=NULL)
  observe({
    dat$dat <- d()
  })

  output$table <- renderDataTable({
    dat$dat
  })
})

shinyApp(ui=ui,server=server)```

我相信最好在反應環境renderDataTable編輯列值。 不需要觀察事件。 只要你不使用<<-表示法寫入環境,這就不會改變原始數據。

library(shiny)
library(data.table)

input_data <- data.frame(lower_rate = c(.5, .5, .5),
                         low_val = c(10,11,12),
                         upper_rate = c(1.5, 1.5, 1.5),
                         upp_val = c(20,21,22),
                         stringsAsFactors = FALSE) 

ui <- shinyUI(
  fluidPage(
    titlePanel("Basic DataTable"),



    # Create a new row for the table.
    fluidRow(
      column(12,

             numericInput("low", label = h3("lower"), value = 0.5),
             numericInput("up", label = h3("Upper"), value = 1.5),
             dataTableOutput(outputId="table")
      )
    )    
  )  
)

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

  output$table <- renderDataTable({
    input_data$lower_rate <- input$low
    #it is not clear where you want the multiplied value to end up
    input_data$new_val <-  input$low*input_data$low_val
    data.table(input_data)
  })
})

shinyApp(ui=ui,server=server)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM