簡體   English   中英

R 中 updateSliderInput 的舍入行為

[英]Rounding behavior of updateSliderInput in R shiny

我正在嘗試使用以下 R Shiny 代碼來使用第一個滑塊來更新第二個滑塊。 但是,當調用updateSliderInput函數時,它似乎覆蓋了原始sliderInputround = T 我知道,因為我在updateSliderInput函數中除以 9,所以第一個滑塊的某些值的步長不會是整數,但是有沒有辦法在重新計算的滑塊中顯示舍入值,以便我不t 獲得 16 位精度?

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      p("The first slider controls the second"),
      sliderInput(inputId = "value", label = "The independent slider",
                  min = 1000, max = 1500, value = 1000, step = 100, round = T
      ),
      sliderInput(inputId = "value2", label = "The dependent slider",
                      min = 5, max = 500, value = 50, round = T
      )
    ),
    mainPanel()
  )
)

server <- function(input, output, session) {
  observe({
    val <- input$value

    updateSliderInput(session, "value2", value = (val * 0.3),
                      min = (val * 0.005), 
                      max = (val * 0.5), 
                      step = floor((val * 0.5) - floor(val * 0.005))/9)

  })     
}

shinyApp(ui, server)

現在,無論我嘗試什么,我都會看到這一點:

我在重新計算的滑塊中看到的原樣

是否像將step=round一樣簡單?

在此處輸入圖片說明

server <- function(input, output, session) {
  observe({
    val <- input$value

    updateSliderInput(session, "value2", value = (val * 0.3),
                      min = (val * 0.005), 
                      max = (val * 0.5), 
                      step = round(floor((val * 0.5) - floor(val * 0.005))/9, 1))

  })     
}

您也可以floorceiling ,甚至使用signif來獲得總位數(而不是round ,它在小數點后進行數字)。

暫無
暫無

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

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