考虑以下代码,下面的数据仅是完整数据集的示例。实际上所有这些数据都是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中有更好的解决方案吗?
答案 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?