R 闪亮的单选按钮-美学必须为长度1或与数据相同

R 闪亮的单选按钮-美学必须为长度1或与数据相同,r,ggplot2,shiny,radio-button,bigdata,R,Ggplot2,Shiny,Radio Button,Bigdata,你好 我遇到了一个错误“美学必须是长度1或与数据相同”,对于一个有光泽的图形中的反应性ggplot 首先,关于数据结构的一点信息: 我使用的是一个大数据集,有很多变量。如下面的代码所示,我构建了一个反应式数据集,首先按地理位置(更高级别和更低级别)和服务类型进行过滤。然后,用户可以选择使用radioButton输入选择Y变量。在下面给出的示例中,服务变量是该地区品牌经营的商业服务总数,而品牌变量是该地区经营的品牌列表。例如: "Brand" "Services" "Rating"

你好

我遇到了一个错误“美学必须是长度1或与数据相同”,对于一个有光泽的图形中的反应性ggplot

首先,关于数据结构的一点信息:

我使用的是一个大数据集,有很多变量。如下面的代码所示,我构建了一个反应式数据集,首先按地理位置(更高级别和更低级别)和服务类型进行过滤。然后,用户可以选择使用radioButton输入选择Y变量。在下面给出的示例中,服务变量是该地区品牌经营的商业服务总数,而品牌变量是该地区经营的品牌列表。例如:

"Brand"     "Services"    "Rating"
  A         25            Good
  B         12            Good 
  C         45            Poor
  ...       ...           ...
我希望我的Y变量可以根据radioButton输入进行更改。有两个可能的变量,一个是数字变量(即“服务”或服务数量),另一个是分类变量(即商业品牌)。两个向量的长度相同。总之,我希望Y轴显示任一变量的计数(即服务数量或品牌数量)

但是,当我更改radioButton选择时,视觉效果不会更新,并且(如下图1和2中所示)Y轴格式不正确

我错过了什么

图1:所选服务

图2:选定品牌

UI

ui <- fluidPage(
   titlePanel("Test App"),
   sidebarLayout(
      sidebarPanel(id = "sidebar",
                   uiOutput("geography1"),
                   uiOutput("geography2"),
                   uiOutput("service"),
                   radioButtons("y", "Choose Y variable",
                                c("Services",
                                  "Brands"),
                                selected = "Services")
      )
         mainPanel(
            tabsetPanel(type = "tabs",
                        tabPanel("Visual", plotOutput("plot", height = "500px")),
                        tabPanel("Underlying data", dataTableOutput("table"))
         )
      )
   )
   )
)

ui问题是
开关
,它应该在
反应式
表达式中定义如下

y <- reactive(switch(input$y, 
                "Services" = datasub3()$Services,
                "Brands" = datasub3()$Brands))
提供的数据集不包括
Sub_type
变量,因此我使用datasub2()。但如果你有任何问题,请告诉我

更新
ggplot
try
aes_string(x=“totall_rating”,y=as.character(input$y),fill=“totall_rating”)
中,不幸的是,代码返回:“未找到对象totall_rating”。您能否提供可复制的数据集?您缺少一些括号/括号。请确保您的代码运行正常好吗?@A.Suliman我只能为您提供一个示例数据集。这样行吗<代码>示例数据对不起,我的错,我应该说,“Sub_Type”变量实际上是指服务类型变量。但是,我试图像您所说的那样运行代码,它抛出了以下错误=
试图为只读的reactivevalues对象赋值。有什么想法吗?谢谢苏利曼,我应该说对不起,我之前在
ggplot
中错过了
y
。但是它对我来说很好,试着删除服务器端并逐个添加回来,以检查错误产生的位置。这是我的荣幸,先生)这就行了,我现在唯一的问题是Y轴显示的是品牌名称,而不是每个评级类别的品牌数量。这有意义吗?例如,Y轴显示评级良好的品牌数量等。对不起,兄弟,让我澄清一下:当我选择服务按钮时,Y轴显示评级(X轴)的服务数量。但是,当我选择Brands按钮时,Y轴会显示所有品牌的名称,但我希望Y轴会根据评级显示品牌的数量。因此,单选按钮允许用户查看:(a)按等级划分的服务数量或(b)按等级划分的品牌数量。因为服务的数量不同于品牌的数量。这更有意义吗?如果不是兄弟,我道歉
y <- reactive(switch(input$y, 
                "Services" = datasub3()$Services,
                "Brands" = datasub3()$Brands))
ggplot(datasub3(), aes(x = Overall_rating, y = y(), fill = Overall_rating))
  ggplot(datasub3(), aes(x = Overall_rating, y =y(), fill = Overall_rating))+
  geom_bar(stat = "identity") + 
  scale_fill_manual(name = "Overall Service Rating", values = colours) +
  geom_text(aes(label=Services), angle=00, hjust= 0.5, vjust=-1, cex=5)