我想将一些文本变量传递给server.R中的条件语句,但我收到此错误。
Listening on http://127.0.0.1:4781
Warning: Error in ==: comparison (1) is possible only for atomic and list types
Stack trace (innermost first):
40: server [/home/..../server.r#10]
1: shiny::runApp
Error in com == 1 :
comparison (1) is possible only for atomic and list types
这是我的ui.R和server.R
server.R
# server.R
shinyServer(function(input, output) {
com=renderText(
ifelse(input$txt1 <= 250,1,0)
)
if(com==1)
{
output$text1=renderText({paste("Hello", input$txt2)}) }
#.....
#...Other output like output$plot,output$summary
}
)
ui.R
# ui.R
shinyUI(fluidPage(
titlePanel("Test"),
sidebarLayout(
sidebarPanel(
helpText("Test UI"),
textInput("txt1","Enter the Roll Number",""),
textInput("txt2","Enter the Name","John"),
# selectInput("var",
# label = "Choose a variable to display",
# choices = c("Percent White", "Percent Black",
# "Percent Hispanic", "Percent Asian"),
# selected = "Percent White"),
# dateInput("date_start", h4("Start Date"), value = "2005-01-01" ,startview = "year"),
sliderInput("range",
label = "Range of interest:",
min = 0, max = 100, value = c(0, 100))
),
mainPanel(
tabsetPanel(type="tab",tabPanel("Console", textOutput("text1")),tabPanel("Summary"))
)
)
))
上述程序的逻辑是,如果卷号小于250,则使用名称打印 hello
答案 0 :(得分:1)
将input$txt1
放入reactive
,以便更轻松地使用。
修改:如果您只想控制1个被动反应,则只能查看test()
并根据该变量执行条件语句
rm(list = ls())
library(shiny)
ui <- shinyUI(
fluidPage(tags$style(type="text/css",".shiny-output-error { visibility: hidden; }",".shiny-output-error:before { visibility: hidden; }"),
titlePanel("Test"),
sidebarLayout(
sidebarPanel(
helpText("Test UI"),
textInput("txt1","Enter the Roll Number",""),
textInput("txt2","Enter the Name","John"),
sliderInput("range", label = "Range of interest:",min = 0, max = 100, value = c(0, 100))
),
mainPanel(
tabsetPanel(type="tab",tabPanel("Console", textOutput("text1"), plotOutput("plot")),tabPanel("Summary"))
)
)
)
)
server <- function(input, output, session) {
test <- reactive({
my_number <- as.numeric(input$txt1)
ifelse(my_number <= 250,1,0)
})
output$text1 <- renderText({
if(test()== 1){
paste("Hello",input$txt2)
}})
output$plot <- renderPlot({
if(test()== 0){
plot(mtcars$wt, mtcars$mpg)}
})
}
shinyApp(ui = ui, server = server)