我有兴趣将我的 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。先发制人地感谢任何阅读本文的人!