【问题标题】:usemethod error in filter when filtering a dataset within shiny server在闪亮的服务器中过滤数据集时过滤器中的使用方法错误
【发布时间】:2021-12-04 06:25:07
【问题描述】:

我正在尝试编写一个闪亮的应用程序,该应用程序根据用户的输入加载 Rdata,对其进行过滤并绘制结果图表。所有 Rdata 文件都位于一个文件夹中,并遵循相同的名称格式。这是我的服务器代码示例。

server <- function(input, output) {
  data <- reactive({load(paste0("themewise_final_datasets/final_", input$Theme, "_theme.RData"))})
  data_filtered <- reactive({data() %>%
      filter(str_detect(locations, input$location))})

  output$average_tone_graph <- renderPlot({
    data_filtered() %>%
# below there were irrelevant code graphs.

此代码的问题在于,即使服务器加载了 rdata,它也不会过滤它。我收到错误 UseMethod:没有适用于“过滤器”的方法应用于“字符”类的对象。我无法修复它。我认为这可能是因为列是因素并试图解决这个问题,但这不是问题。

【问题讨论】:

    标签: r dplyr filter shiny reactive


    【解决方案1】:

    当您尝试将数据类型应用于诸如filter 这样您的系统没有特定实现的泛型方法时会发生此错误。您可以检查您的环境支持哪些数据类型(给定已加载的包)...

    methods(filter)
    

    在我的系统中我得到了结果

    #' [1] filter.data.frame* filter.ts*
    

    这意味着,我可以在基本 R 数据帧和时间序列对象上应用过滤器方法。您的系统上似乎有类似的情况。从错误消息中,您可以了解到您为filter 提供的输入属于character 类。如果methods(filter) 没有为这些返回方法,您有两个选择:找到可以处理字符向量的filter 的实现;更改data()的类型;或使用不同的方式过滤向量,如下所示:

    data()[str_detect(locations, input$location)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 2015-07-14
      • 1970-01-01
      • 1970-01-01
      • 2015-03-09
      • 1970-01-01
      相关资源
      最近更新 更多