【问题标题】:How can i solve this error : "Error in: object of type 'closure' is not a subset" in shiny APP using datatables我该如何解决这个错误:“错误:'closure'类型的对象不是一个子集”在闪亮的APP中使用数据表
【发布时间】:2020-03-08 16:05:21
【问题描述】:

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

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

这是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
      )
    })
  })

ui.R

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

提前致谢

编辑

getConfigurationByID:

  .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

感谢回复

【问题讨论】:

  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。 getConfigurationById 之类的函数从何而来?我认为您不想将 renderDataTable 嵌套在 renderUI
  • 这看起来很可疑:allElites &lt;- iraceResults$allElites[[input$iterationsElites]]。是的,您应该向我们提供您的数据。
  • allElites 是来自 IRACE 库的数据框。如果我在“bestConfiguration”变量中有数据,如何呈现数据表?我卡住了。

标签: r shiny datatables dt shinyapps


【解决方案1】:

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

因此,通过您的代码查找看似子集数据对象但实际上具有函数名称的对象,您就会发现问题。

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

【讨论】:

    猜你喜欢
    • 2015-06-18
    • 2023-02-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    相关资源
    最近更新 更多