R闪亮错误:“ closure”类型的对象不可子集化

数字

我正在使用以下代码,并且始终会收到此子表错误。我在搞什么,我在哪里错。这应该是一些我修改过的基本输入代码,并且在某些时候确实起作用了,但我看不到错误。

谢谢

服务器

library(shiny)

# Define a server for the Shiny app
shinyServer(function(input, output) {

  # Filter data based on selections
  output$table <- renderDataTable({
    data <- read.table("my.csv", sep =',', header =TRUE)
    if (input$shortdesc != "All"){
      data <- data[data$ShortDescription == input$shortdesc,]
    }
    if (input$taken != "All"){
      data <- data[data$Taken == input$taken,]
    }
    if (input$location != "All"){
      data <- data[data$Location == input$location,]
    }
    data
  })

})

用户界面

library(shiny)
# Define the overall UI

shinyUI(
  fluidPage(
    titlePanel("My Items"),

    # Create a new Row in the UI for selectInputs
    fluidRow(
      column(4, 
             selectInput("man", 
                         "What:", 
                         c("All", 
                           unique(as.character(data$ShortDescription))))
      ),
      column(4, 
             selectInput("trans", 
                         "Where:", 
                         c("All", 
                           unique(as.character(data$Location))))
      ),
      column(4, 
             selectInput("cyl", 
                         "Who:", 
                         c("All", 
                           unique(as.character(data$Taken))))
      )        
    ),
    # Create a new row for the table.
    fluidRow(
      dataTableOutput(outputId="table")
    )    
  )  
)

更新:

为什么该示例(见下文)能正常工作,而我将其更改为my.csv的那一刻就中断了?如果“数据”是一个内置函数,那是否也不会与下面的示例发生冲突?对不起您的理解,但这使我感到困惑。

服务器

library(shiny)

# Load the ggplot2 package which provides
# the 'mpg' dataset.
library(ggplot2)

# Define a server for the Shiny app
shinyServer(function(input, output) {

  # Filter data based on selections
  output$table <- renderDataTable({
    data <- mpg
    if (input$man != "All"){
      data <- data[data$manufacturer == input$man,]
    }
    if (input$cyl != "All"){
      data <- data[data$cyl == input$cyl,]
    }
    if (input$trans != "All"){
      data <- data[data$trans == input$trans,]
    }
    data
  })

})

ui.R.

library(shiny)

# Load the ggplot2 package which provides
# the 'mpg' dataset.
library(ggplot2)

# Define the overall UI
shinyUI(
  fluidPage(
    titlePanel("Basic DataTable"),

    # Create a new Row in the UI for selectInputs
    fluidRow(
      column(4, 
          selectInput("man", 
                      "Manufacturer:", 
                      c("All", 
                        unique(as.character(mpg$manufacturer))))
      ),
      column(4, 
          selectInput("trans", 
                      "Transmission:", 
                      c("All", 
                        unique(as.character(mpg$trans))))
      ),
      column(4, 
          selectInput("cyl", 
                      "Cylinders:", 
                      c("All", 
                        unique(as.character(mpg$cyl))))
      )        
    ),
    # Create a new row for the table.
    fluidRow(
      dataTableOutput(outputId="table")
    )    
  )  
)
长老

扩展@Roland的注释:您正在进行命名空间冲突。data基本R中有一个函数,因此,如果Rdata在当前环境中找不到对象data则从全局环境中引用该函数在您的特殊情况下,发生这种情况是因为ui.Rserver.R处于不同的环境中,此外,各个功能主体都有各自的环境。因此,datainfluidRow(...)中没有引用datafrom output$table您需要传递参数和/或使用该函数动态构建UI。例如参见这里

更新已更新的问题:

替换datampgin可以ui.R解决此问题,因为它mpg被定义为全局环境中的数据集(这是的副作用library(ggplot2))。因此mpg,(几乎)总是可以访问并具有必要的属性。对于一个更加公平的比较,替换mpgui.Rdata,这应该带回的老问题,是因为data在全球环境指的是功能,而不是你想操纵数据帧。

超级更新具有用于动态定义和加载每个数据集选择元素的更通用的解决方案:

服务器代码循环遍历所选数据帧的所有列,并为具有非double类型的每一列动态生成一个选择框。(带双精度的唯一性和相等性只是在问麻烦。)这避免了范围问题,因为UI元素是在server.R调用加载数据的反应函数之后创建的。

服务器

library(shiny)
library(ggplot2)
# Define a server for the Shiny app
shinyServer(function(input, output) {

  get.data <- reactive({
    switch(input$dataset,
           "rock" = rock,
           "pressure" = pressure,
           "cars" = cars,
           "mpg" = mpg,
           "mtcars" = mtcars,
           "diamonds" = diamonds)
  })

  # Filter my.data based on selections
  output$table <- renderDataTable({
    my.data <- get.data()
    for(n in names(my.data)){
        # avoid too many cases ... 
        # unique() with double is just asking for trouble
        if(typeof(my.data[,n]) != "double"){ 
            val <- eval(parse(text=paste0("input$",n)))
            print(val)
            if(val != "All"){
                my.data <- eval(parse(text=paste0("subset(my.data,",n,"==",val,")")))
            }
        }
    }
    my.data
  })

  output$dyn.ui <- renderUI({
      my.data <- get.data()
      sel <- NULL
      for(n in names(my.data)){
          # avoid too many cases ... 
          # unique() with double is just asking for trouble
          if(typeof(my.data[,n]) != "double"){ 
              sel <- c(sel,
                   selectInput(n, n, choices=c("All",unique(my.data[,n])))
                   )
          }
      }
      sel
  })

})

用户界面

library(shiny)

# Define the overall UI

shinyUI(fluidPage(
    titlePanel("Displaying tables dynamically with renderUI() and eval()"),

    sidebarLayout(
        sidebarPanel(h2("Selection"),
                     selectInput("dataset", "Dataset", c("rock", "pressure", "cars","mtcars","diamonds")),
                     # Create a new Row in the UI for selectInputs
                     uiOutput("dyn.ui")

        )
        ,mainPanel(h2("Data"),
           dataTableOutput(outputId="table")       
        )
    )


))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R中的错误:“ closure”类型的对象不可子集化

来自分类Dev

renderPlot产生错误“'closure'类型的对象不可子集化”

来自分类Dev

in <>中的错误:“ closure”类型的对象不可子集化,仍然不知道如何解决它

来自分类Dev

我在$中不断收到错误:类型为'closure'的对象不可子集化

来自分类Dev

I [j] <-IFunction(j,d,x)中的错误:类型为'closure'的对象不可子集化

来自分类Dev

lme-错误:“关闭”类型的对象不可子集化

来自分类Dev

“闭包”类型的对象在 R Shiny 中不可子集化

来自分类Dev

“闭包”类型的 R studio/Sweave 对象不可子集化

来自分类常见问题

从文件路径的R闪亮列表中选择子文件夹时,类型为'closure'的对象的错误不是子集

来自分类Dev

从文件路径的R闪亮列表中选择子文件夹时,类型为'closure'的对象的错误不是子集

来自分类Dev

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

来自分类Dev

R闪亮错误:找不到对象输入

来自分类Dev

用ggplot2拟合nls-类型为'symbol'的错误对象不可子集化

来自分类Dev

R:使用foreach循环时,“类型'S4'的对象不可子集化”

来自分类Dev

$中的错误:'closure'类型的对象不是子集,我该如何解决这个问题?

来自分类Dev

scatterplot3d故障:“类型为'closure'的对象不可子集化”

来自分类Dev

'buildin'类型的对象不可子集化

来自分类Dev

R Studio闪亮应用错误:未找到对象“变量(克拉)”

来自分类Dev

闪亮的部署错误:值 [[3L]](cond) 中的错误:“闭包”类型的对象不是可子集的

来自分类Dev

R闪亮:反应错误

来自分类Dev

R与ggplot的闪亮错误

来自分类Dev

在闪亮中找不到对象错误

来自分类Dev

R闪亮 - 错误:必须是数字

来自分类Dev

使用ChoiceField时类型错误对象不可JSON序列化

来自分类Dev

R闪亮的反应性返回多个对象

来自分类Dev

R闪亮的反应性返回多个对象

来自分类Dev

R闪亮使滑块值动态化

来自分类Dev

R闪亮使滑块值动态化

来自分类Dev

类型错误“类”对象不可调用

Related 相关文章

  1. 1

    R中的错误:“ closure”类型的对象不可子集化

  2. 2

    renderPlot产生错误“'closure'类型的对象不可子集化”

  3. 3

    in <>中的错误:“ closure”类型的对象不可子集化,仍然不知道如何解决它

  4. 4

    我在$中不断收到错误:类型为'closure'的对象不可子集化

  5. 5

    I [j] <-IFunction(j,d,x)中的错误:类型为'closure'的对象不可子集化

  6. 6

    lme-错误:“关闭”类型的对象不可子集化

  7. 7

    “闭包”类型的对象在 R Shiny 中不可子集化

  8. 8

    “闭包”类型的 R studio/Sweave 对象不可子集化

  9. 9

    从文件路径的R闪亮列表中选择子文件夹时,类型为'closure'的对象的错误不是子集

  10. 10

    从文件路径的R闪亮列表中选择子文件夹时,类型为'closure'的对象的错误不是子集

  11. 11

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

  12. 12

    R闪亮错误:找不到对象输入

  13. 13

    用ggplot2拟合nls-类型为'symbol'的错误对象不可子集化

  14. 14

    R:使用foreach循环时,“类型'S4'的对象不可子集化”

  15. 15

    $中的错误:'closure'类型的对象不是子集,我该如何解决这个问题?

  16. 16

    scatterplot3d故障:“类型为'closure'的对象不可子集化”

  17. 17

    'buildin'类型的对象不可子集化

  18. 18

    R Studio闪亮应用错误:未找到对象“变量(克拉)”

  19. 19

    闪亮的部署错误:值 [[3L]](cond) 中的错误:“闭包”类型的对象不是可子集的

  20. 20

    R闪亮:反应错误

  21. 21

    R与ggplot的闪亮错误

  22. 22

    在闪亮中找不到对象错误

  23. 23

    R闪亮 - 错误:必须是数字

  24. 24

    使用ChoiceField时类型错误对象不可JSON序列化

  25. 25

    R闪亮的反应性返回多个对象

  26. 26

    R闪亮的反应性返回多个对象

  27. 27

    R闪亮使滑块值动态化

  28. 28

    R闪亮使滑块值动态化

  29. 29

    类型错误“类”对象不可调用

热门标签

归档