r - RShiny - 警告:错误:美学必须是长度 1 或与数据相同 (48):y
问题描述
我试图让我的输入函数链接到我的脚本,但我不断收到错误消息。我正在尝试添加一个复选框选项来过滤我在图中的数据。
我曾尝试在我的脚本 ( input$rating
) 中的许多不同位置放置输入函数,但我不断收到类似的错误。我到处寻找,但似乎找不到解决此问题的通用答案。
ui <- fluidPage("Retired Risks by Retired Date",
checkboxGroupInput(inputId = "rating", label = "Risk Rating",
choices = c("Critical","Major","Moderate","Minor")),
plotOutput("plot1"))
server <- function(input, output){
Risk <- read.csv("C:/Users/ABakk1/Desktop/RShinyTest.csv")
df <- data.frame(Risk$Risk_Retired_Date, Risk$Risk_Rating)
dfsum <- df %>%
group_by(Risk.Risk_Retired_Date, Risk.Risk_Rating) %>%
tally()
dfsum$Risk.Risk_Retired_Date <- factor(dfsum$Risk.Risk_Retired_Date,
levels=c("18-Jan","18-Feb","18-Mar","18-Apr",
"18-May","18-Jun","18-Jul","18-Aug",
"18-Sep","18-Oct","18-Nov","18-Dec",
"19-Jan","19-Feb"))
output$plot1 <- renderPlot({
print(ggplot(dfsum, aes(x = Risk.Risk_Retired_Date,
y = n<input$rating, colour = Risk.Risk_Rating ))) +
geom_line(aes(group = Risk.Risk_Rating), size = 1.5) +
scale_color_manual(name = "Risk Rating",
labels = c("Critical", "Major", "Minor", "Moderate"),
values = c("Critical"="darkred", "Major"="orangered",
"Moderate"="darkorange", "Minor"="darkgoldenrod1")) +
scale_y_continuous(limits = c(0,35)) +
theme_bw() +
theme(panel.grid.major = element_blank(),
legend.key=element_blank(), legend.justification = c(0,1),
legend.position = c(0.05,0.95),
legend.box.background = element_rect(colour = "black"),
text=element_text(size=14, family="Arial Narrow")) +
labs(title = "Retired Risks by Date",
y = "Number Risks Closed", x = "Risk Retired Date") +
guides(color=guide_legend(override.aes=list(fill=NA)))})
}
shinyApp(ui, server)
这就是我的图应该是这样的:折线图
我只想添加过滤器选项。
据我所知,我认为我没有将其放置input$rating
在正确的位置,但我已经看到许多不同的脚本将其放置在不同的位置。这是一个容易解决的问题吗?
解决方案
存储在 input$rating 中的值是来自以下一项或多项的字符向量:c("Critical","Major","Moderate","Minor")
.
在 renderPlot 函数中的 ggplot 调用中,您正在评估 input$rating ,就好像它是一个数字:
print(ggplot(dfsum, aes(x = Risk.Risk_Retired_Date,
y = n<input$rating, colour = Risk.Risk_Rating ))) +
相反,我会创建一个反应对象来在求和之前存储一个新的数据框,并根据您的选择进行过滤:
dfsum <- reactive({
df %>%
# New code below
filter(Risk.Risk_Rating %in% input$rating) %>%
# Your original code
group_by(Risk.Risk_Retired_Date, Risk.Risk_Rating) %>%
tally()
dfsum$Risk.Risk_Retired_Date <- factor(dfsum$Risk.Risk_Retired_Date,
levels=c("18-Jan","18-Feb","18-Mar","18-Apr",
"18-May","18-Jun","18-Jul","18-Aug",
"18-Sep","18-Oct","18-Nov","18-Dec",
"19-Jan","19-Feb"))
})
``
推荐阅读
- json - recaptcha 响应中的前导符号“)]}'”是什么
- python - 在 Mac 上更新 python 版本
- python - KivyMD 与 plyer Filechooser - 如何获取目录的路径?
- ios - 当我在 ios 模拟器上运行我的颤振项目时出现此错误:-ProcessException:进程超时:
- sql - 根据唯一记录 postgres 将一列从一个 sql 表传输到另一列
- c# - Unity Run 功能在按钮单击事件后连续运行
- blazor - Blazor 服务器端应用程序在文件下载后死机
- python - Google OR-Tools - 找到最佳小组作业
- java - com.mongodb.MongoSocketOpenException:异常打开套接字
- javascript - 链式 AJAX 调用在 PHP 脚本中给出“注意:未定义索引”错误