《闪亮应用》中的ifelse声明

时间:2018-07-30 04:58:33

标签: r shiny dplyr

考虑以下代码,下面的数据仅是完整数据集的示例。实际上所有这些数据都是data.frames。

#Input data
x = c(70407, 70407, 10977, 10977, 70668, 70450, 70276, 70450, 20820,"L06G1", "L06AP",20820, 70450, 70450, 70450, 70190, 70450)

#Shiny ui.R
selectInput(inputId = "z",label = "PN",choices = unique(x),multiple = TRUE,selected = "")

#if else statement in server.R
y = if(is.null(input$z)) as.vector(unique(x)) else input$z

我担心的是,即使为z选择特定的值(输出y而不是z)显示的都是unique(x)。

所有数据类型都是相同的字符。

dplyr中有更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

您的实现应该存在另一个问题。这是一个根据您的描述的最小工作示例:

library(shiny)

x = c(70407, 70407, 10977, 10977, 70668, 70450, 70276, 70450, 20820, "L06G1", "L06AP", 20820, 70450, 70450, 70450, 70190, 70450)

## if x is a column of the data frame df as you stated:
# x <- df$x[!is.na(df$x)]

ui <- fluidPage(
  selectInput(
    inputId = "z", 
    label = "PN", 
    choices = unique(x),
    selected = NULL,
    multiple = T,
  ),
  verbatimTextOutput("y")
)

server <- function(input, output) {
  output$y <- renderPrint({
    y <- if(is.null(input$z)) as.vector(unique(x)) else input$z
    y
  })
}

shinyApp(ui = ui, server = server)

请注意,如果您提供了可重复的问题,则可以充分利用Stack Overflow社区:How to make a great R reproducible example?