我正在学习Shiny并希望运行以下基本功能。该函数只是标识在其第一个(也是唯一的)参数中指定的对象的类。
check_data_type = function(sample_variable) {
type = class(sample_variable)
if (type=='numeric') {
print("Data type is numeric")
output = 1
} else {
print(paste0('Data type is ', type))
output = 2
}
return(output)
}
我想通过textInput函数在Shiny中指定参数,如下所示:
library(shiny)
ui <- fluidPage(
textInput(inputId = "keystroke_input", label = "Enter one keystroke here",
value = NULL),
textOutput(outputId = "keystoke_class"),
actionButton("go","Run Function")
)
server <- function(input, output) {
observeEvent(input$go,
output$keystoke_class <- renderText({
check_data_type(input$keystroke_input)
})
)
}
shinyApp(ui = ui, server = server)
但是,当通过Shiny UI指定check_data_type程序时,程序总是将我通过textInput字段输入的值分类为&#34;字符。&#34;
textInput函数,正如其名称所暗示的那样,似乎是自动将它收到的任何值分类为&#34; character&#34;在check_data_type函数评估之前。
我认为这是正在发生的事情,因为如果相反我尝试在Shiny中运行以下简单的算术函数...
square_the_number = function(sample_Variable) {
return(sample_variable^2)
}
...我需要首先通过as.numeric()函数将通过textInput函数输入的值转换为数值。为了说明,当我在Shiny服务器功能中调用上述功能时(参见下面的方框中的倒数第二行),程序正确执行。否则它将返回&#34;错误:二元运算符的非数字参数。&#34;
ui <- fluidPage(
textInput(inputId = "keystroke_input", label = "Enter one keystroke here",
value = NULL),
textOutput(outputId = "keystoke_class"),
actionButton("go","Run Function")
)
server <- function(input, output) {
observeEvent(input$go,
output$keystoke_class <- renderText({
square_the_number(as.numeric(input$keystroke_input))
})
)
}
shinyApp(ui = ui, server = server)
有没有办法让textInput函数与类无关,以便通过前面提到的check_data_type函数正确地对数值进行分类?
我考虑过numericInput函数,但这会强制您指定一个下拉菜单,并且我希望保持输入字段的开放性。
答案 0 :(得分:1)
numericInput()
正是您要找的。 p>
ui <- fluidPage(
numericInput(inputId = "keystroke_input", label = "Enter one keystroke here",
value = NULL),
textOutput(outputId = "keystoke_class"),
actionButton("go","Run Function")
)
server <- function(input, output) {
observeEvent(input$go,
output$keystoke_class <- renderText({
(input$keystroke_input)^2
})
)
}
shinyApp(ui = ui, server = server)
答案 1 :(得分:0)
在R闪亮中,我们有几种选择来提供输入。我们也有数字输入选项。检查显示所有可用选项的链接。还提供了每个代码。 http://shiny.rstudio.com/gallery/widget-gallery.html
如果您不熟悉闪亮,可以通过本教程学习 https://shiny.rstudio.com/tutorial/