我有一个Shiny应用程序,它使用server
和ui
函数,如下所示:
df<- read_csv(path_here)
ui <- fluidPage(
# App title ----
titlePanel("Histograms!"),
# Sidebar layout with input and output definitions ----
sidebarLayout(
# Sidebar panel for inputs ----
sidebarPanel(
checkboxGroupInput("Company",
"Company",
choices = unique(df$Company)
),
checkboxGroupInput("predicted_condition",
"Predicted Condition",
choices = unique(df$Predicted.Condition)
)
),
# Main panel for displaying outputs ----
mainPanel(
# Output: Histogram ----
plotOutput(outputId = "distPlot")
)
)
)
server<- function( input, output, session){
reactive_data <- reactive({
df %>%
filter(Company %in% input$Company)%>%
filter(Predicted.Condition %in% input$Predicted_Condition)%>%
select(Predicted.Probability)
})
output$distPlot <- renderPlot({
hist(reactive_data())
})
}
基本上,我正在制作一个直方图,用户可以在其中使用名为Company
和Predicted_Condition
的复选框。他们的选择会过滤我的df
中相应的列,然后我会为Predicted.Probability
列中剩下的概率做一个直方图。
然而,当我运行这个时,我得到一个错误,说x must be numeric
,尽管我已经检查了Predicted.Probability列是数字。有什么建议吗?
如果没有数据和ui,很难知道,但似乎您正在尝试从数据帧中制作直方图。是的,您的列可能包含数值,但实际上您是在筛选到一个只有一列的数据帧,而不是一个数字向量。试试这个:
server<- function( input, output, session){
reactive_data <- reactive({
filtered_dat <- df %>%
filter(Company %in% input$Company)%>%
filter(Predicted.Condition %in% input$Predicted_Condition)
return(filtered_dat$Predicted.Probability))
})
output$distPlot <- renderPlot({
hist(reactive_data())
})
}