首页 > 解决方案 > 我该如何解决这个错误:“错误:'closure'类型的对象不是一个子集”在闪亮的APP中使用数据表

问题描述

我正在制作一个闪亮的应用程序,我需要一个对输入做出反应的数据表,但是当我渲染数据表时,我收到以下错误

错误:“闭包”类型的对象不是子集

这是 server.R 中的函数

  output$elites <- renderUI({
    req(input$iterationsElites)
    allElites <- iraceResults$allElites[[input$iterationsElites]]
    for(i in allElites)
    {
      bestConfiguration <- getConfigurationById(iraceResults, ids=i)
      print(bestConfiguration)
    }
    DT::renderDataTable({
      DT::datatable(
        bestConfiguration
      )
    })
  })

用户界面

      fluidRow(
          box(title = "Elite Configurations",
              status = "primary",
              numericInput("iterationsElites","Select Iteration",value = 1,min = 1,max = iraceResults$state$nbIterations),
              uiOutput("elites"),
              width = 15
          )
        ),

提前致谢

编辑

获取配置ID:

  .ID. algorithm localsearch alpha beta  rho ants q0 rasrank elitistants nnls  dlb .PARENT.
7    7        as           0  4.96 0.81 0.27   32 NA      NA          NA   NA <NA>       NA
   .ID. algorithm localsearch alpha beta  rho ants q0 rasrank elitistants nnls dlb .PARENT.
52   52        as           1  0.35 6.72 0.11   92 NA      NA          NA    8   0       NA
   .ID. algorithm localsearch alpha beta  rho ants q0 rasrank elitistants nnls dlb .PARENT.
73   73        as           3  0.61 2.29 0.66   34 NA      NA          NA   22   1       NA
   .ID. algorithm localsearch alpha beta  rho ants q0 rasrank elitistants nnls dlb .PARENT.
67   67      mmas           3  2.73 7.98 0.97   34 NA      NA          NA   41   0       NA
   .ID. algorithm localsearch alpha beta  rho ants q0 rasrank elitistants nnls dlb .PARENT.
58   58       eas           2  0.32 2.97 0.72   80 NA      NA          58    6   1       NA

变量 allElites 包含通过函数 getConfigurationByID 获取配置的 ID

[1]  7 52 73 67 58

谢谢回答

标签: rshinydatatablesdtshinyapps

解决方案


“闭包类型的对象”是指一个函数。错误消息意味着您正在尝试对函数进行子集化(即,使用 $ 或括号),这显然没有意义。

所以通过你的代码寻找看起来像子集数据对象但实际上具有函数名称的对象,你会发现你的问题。

此错误通常是数据对象名称拼写错误的结果。请注意,如果您使用现有函数的名称定义数据对象,R 将首先找到数据对象。但是,如果尝试对您命名为“Sum”的数据对象进行子集化并将其称为“sum”(这是内置函数的名称),您将收到此错误。


推荐阅读