我尝试使用闪亮来为通过下拉框选择的状态创建条形图。我对R来说很陌生,我尝试过各种各样的例子都无济于事。我有三个变量(state,claim#,total $),每个州有五个值。所以像这样:
state <- c("PA", "TX", "NY")
claim_num <- c(1:15)
total <- sample(1000:5000, 15)
df <- (state, claim_num, total)
我希望有类似于https://beta.rstudioconnect.com/jjallaire/shiny-embedding/#inline-app的内容,但我不知道我是否可以格式化我的数据,因为我会有很多新手。
答案 0 :(得分:1)
你的意思是这样的(你可以下载并运行这个例子)吗?
library(shiny)
ui <- shinyUI(
fluidPage(
titlePanel("Sample Shiny App"),
sidebarLayout(
sidebarPanel(
uiOutput("stateInput")
),
mainPanel(
plotOutput("statePlot")
)
)
))
server <- shinyServer(function(input, output) {
state <- sample(state.abb, 3, replace = FALSE)
total <- sample(1000:5000, 15)
claimNumber <- 1:15
data <- data.frame(state, total, claimNumber)
output$stateInput <- renderUI({
selectInput(
inputId = "state",
label = "Select a State:",
choices = levels(data$state)
)
})
output$statePlot <- renderPlot({
hist(data$total[data$state == input$state])
})
})
shinyApp(ui = ui, server = server)
我们正在做的是获取数据框中可用的唯一状态列表,并将这些状态传递给我们的selectInput
,它们呈现为UI中的下拉列表。从这里,我们可以访问用户通过input$state
对象选择的任何值。更一般地说,我们可以根据我们定义inputId
的任何内容来访问输入(在这种特殊情况下,我们称之为state
)。
抓取用户输入后,我们可以将数据框子集化为仅返回与用户定义状态对应的值,在这种情况下,将这些总值传递给我们呈现为输出的图。