1

我有兴趣将我的 numericInputs 转换为来自 shinywidgets 包的 autonumericInputs。我的主要问题是,即使 autonumericInput 的默认值为 NA/NULL/"",输出仍然读取为 0,并将其计为具有 1 个字符。从服务器端,我想说以下之一:if(is.null(x) | is.na(x) | x == "" | nchar(x) == 0),然后是另一个对象不会运行。

对于某些 numericInputs 这不是问题,因为我只能说它需要大于 0。但是对于某些输入,0 是可以接受的,我想强制填写输入。我想我可以默认输入到“-1”,然后说大于或等于 0,至少需要与输入进行一些交互,但这对我来说似乎很乱。

这是一个在第一列上使用常规 numericInput,在第二列上使用 autonumericInput 的示例。如果该字段为空白,则每个输入下方的文本不应显示。

library(shiny)
library(shinyWidgets)

ui <- fluidPage(
  column(width = 2,
  numericInput("Test", "Numeric Input Test", value = NULL),
  textOutput("Test2")
  ),
  column(width = 2,
  autonumericInput("Test1", "AutoNumeric Input Test", value = NULL),
  textOutput("Test3")
  )
)

server <- function(input, output, session) {
  
  output$Test2<-renderText({
    req(input$Test, nchar(input$Test) > 0, !is.na(input$Test), !is.null(input$Test))
    paste0("Numeric Input reads as: ",input$Test,". Number of characters: ",nchar(input$Test))
    })
  
  output$Test3<-renderText({
    req(input$Test1, nchar(input$Test1) > 0, !is.na(input$Test1), !is.null(input$Test1))
    paste0("Autonumeric Input reads as: ",input$Test1,". Number of characters: ",nchar(input$Test1))
  })
  
  
}
shinyApp(ui, server)

我还没有找到处理这些的方法,我希望有人有想法。也许这只是包 github 上的功能请求或问题:https ://github.com/dreamRs/shinyWidgets/我已经阅读了文档,至少我没有看到任何我认为可以解决的功能它:https ://search.r-project.org/CRAN/refmans/shinyWidgets/html/autonumericInput.html

为什么我想切换到 autonumericInput 是因为我喜欢更好的控制,简化用户输入。限制接受的值,始终显示小数位,小数点后接受的有限点,显示像%这样的符号。

也许这是一个过时的包问题?我希望情况并非如此,否则我需要更新几台机器的软件包,其中一些机器无法访问互联网,这是我的 sessionInfo():

Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] shinyWidgets_0.6.0 shiny_1.6.0       

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.2        withr_2.4.2       digest_0.6.27    
 [4] later_1.2.0       mime_0.7          R6_2.4.0         
 [7] jsonlite_1.6      lifecycle_1.0.0   xtable_1.8-4     
[10] magrittr_1.5      cli_2.5.0         cachem_1.0.4     
[13] rlang_0.4.11      promises_1.2.0.1  jquerylib_0.1.4  
[16] bslib_0.2.4       ellipsis_0.3.2    tools_3.6.1      
[19] httpuv_1.6.1      fastmap_1.1.0     compiler_3.6.1   
[22] sessioninfo_1.1.1 htmltools_0.5.1.1 sass_0.3.1  

我不知道这是否相关,但我认为 shinywidgets 使用 javascript,并且此堆栈列表提到 javascript 将空行读取为 0:Node.js + Lazy:如何防止空行被读取为“0”?其他一切都失败了,我会坚持使用常规的 numericInput。先发制人地感谢任何阅读本文的人!

4

0 回答 0