如果/ else语句没有正确评估闪亮/ R

时间:2016-05-11 12:08:58

标签: r if-statement boolean shiny

使用闪亮的R。

在我的ui.R我有一个看起来像这样的元素

radioButtons("startEnd",
    label = "Choose",
    choices = list("start" = 1,
    "end" = 2),
    selected = NA,
    inline = TRUE
) 

在我的server.R我有这个

observeEvent(input$startEnd, {
    print(input$startEnd)
    if (!is.null(as.integer(input$startEnd)) == 1) {
            print("Gone in if")
    } else if (!is.null(as.integer(input$startEnd)) == 2) {
            print("Gone in else if")
    } else {
            print("Gone in nothing")
    }       
}) 

但是,它总是评估为print("Gone in if")但是我的第一个print(input$startZiel)会打印出正确的数字,具体取决于我在应用中点击的内容。

1 个答案:

答案 0 :(得分:2)

您目前正在做的是将input$startEnd转换为整数,通过否定其null来将该整数转换为布尔值,然后将该布尔值与整数进行比较。因为您的数字不为null,所以布尔值计算为TRUE,它等于1,因此第一个条件始终成立。我想你想要的实际上是以下内容,

observeEvent(input$startEnd, {
print(input$startEnd)
asInt = as.integer(input$startEnd)
if(!is.null(asInt)) {
    if (asInt == 1) {
        print("Gone in if")
    } else if (asInt == 2) {
        print("Gone in else if")
    } else {
        print("Gone in nothing")
    }  
}     

})

相关问题