在绘图之前使用过滤器数据将导致参数丢失

时间:2019-06-05 14:25:47

标签: r

我想为某些数据创建一个闪亮的dashborad,但是,当我绘制过滤后的数据框时,它将导致大约0.5s的错误并将其显示在控制台中。

我试图删除属于子集(.[,input$groupby] %in% input$selectline的filter命令,所有错误都将得到解决。但是,我需要过滤数据以使交互变得闪亮。

newData = mydata %>%
        group_by(`Year.ending.December`,.dots=input$groupby) %>%
        summarise(`Incidents.Recorded` = sum(`Incidents.Recorded`)/1000) %>%
        as.data.frame() %>%
        subset(.[,input$groupby] %in% input$selectline) #This command causes the error

ggplot(newData,aes_string("Year.ending.December","Incidents.Recorded",color = input$groupby)) +
        geom_line() +
        labs(x="Year",y="Counts(thound)")

如上面的代码所示,input $ groupby将从ui.R返回一个列名。 ,但是,折线图中会显示多条线,因此我还需要让用户选择他们想要查看的线,因此input$selectline将返回有关数据值的列表。

我还认为我的逻辑还可以,因为它最终将显示正确的结果,只有问题在显示结果之前,在绘图区域中将显示大约0.5s的错误消息,如下所示: 警告:错误顺序:参数1不是向量

  108: order

  105: to_basic.GeomLine

  103: layers2traces

  102: gg2list

  101: ggplotly.ggplot

   98: plotly_build.gg

   96: "plotly":::"prepareWidget"

   95: func

   82: origRenderFunc

   81: output$plotArea

    1: runApp

1 个答案:

答案 0 :(得分:0)

假设您正在renderPlot()函数中运行该代码。您可以尝试更改一些内容:使用group_by_代替group_by,因为input$groupby是一个字符向量。并使用filter_at而不是subset

newData <-  mydata %>%
  group_by_("Year.ending.December", input$groupby) %>%
  summarise(`Incidents.Recorded` = sum(`Incidents.Recorded`)/1000) %>%
  as.data.frame() %>%
  filter_at(vars(input$groupby), any_vars(. %in% imput$selectline))

如果您可以显示应用程序和数据的可复制示例,并且仅包含问题中涉及的元素,那么这将是一种更好的方法,可帮助您并在进行任何推荐之前测试代码。