Error in : object of type 'closure' is not subsettable

前端 未结 5 2069
生来不讨喜
生来不讨喜 2020-11-22 04:39

I was finally able to work out the code for my scraping. It seemed to be working fine and then all of a sudden when I ran it again, I got the following error message:

<
相关标签:
5条回答
  • 2020-11-22 04:58

    You don't define the vector, url, before trying to subset it. url is also a function in the base package, so url[i] is attempting to subset that function... which doesn't make sense.

    You probably defined url in your prior R session, but forgot to copy that code to your script.

    0 讨论(0)
  • 2020-11-22 05:01

    I had this issue was trying to remove a ui element inside an event reactive:

    myReactives <- eventReactive(input$execute, {
        ... # Some other long running function here
        removeUI(selector = "#placeholder2")
    })
    

    I was getting this error, but not on the removeUI element line, it was in the next observer after for some reason. Taking the removeUI method out of the eventReactive and placing it somewhere else removed this error for me.

    0 讨论(0)
  • 2020-11-22 05:10

    I think you meant to do url[i] <- paste(...

    instead of url[i] = paste(.... If so replace = with <-.

    0 讨论(0)
  • 2020-11-22 05:20

    In case of this similar error Warning: Error in $: object of type 'closure' is not subsettable [No stack trace available]

    Just add corresponding package name using :: e.g.

    instead of tags(....)

    write shiny::tags(....)

    0 讨论(0)
  • 2020-11-22 05:21

    In general this error message means that you have tried to use indexing on a function. You can reproduce this error message with, for example

    mean[1]
    ## Error in mean[1] : object of type 'closure' is not subsettable
    mean[[1]]
    ## Error in mean[[1]] : object of type 'closure' is not subsettable
    mean$a
    ## Error in mean$a : object of type 'closure' is not subsettable
    

    The closure mentioned in the error message is (loosely) the function and the environment that stores the variables when the function is called.


    In this specific case, as Joshua mentioned, you are trying to access the url function as a variable. If you define a variable named url, then the error goes away.

    As a matter of good practise, you should usually avoid naming variables after base-R functions. (Calling variables data is a common source of this error.)


    There are several related errors for trying to subset operators or keywords.

    `+`[1]
    ## Error in `+`[1] : object of type 'builtin' is not subsettable
    `if`[1]
    ## Error in `if`[1] : object of type 'special' is not subsettable
    

    If you're running into this problem in shiny, the most likely cause is that you're trying to work with a reactive expression without calling it as a function using parentheses.

    library(shiny)
    reactive_df <- reactive({
        data.frame(col1 = c(1,2,3),
                   col2 = c(4,5,6))
    })
    

    While we often work with reactive expressions in shiny as if they were data frames, they are actually functions that return data frames (or other objects).

    isolate({
        print(reactive_df())
        print(reactive_df()$col1)
    })
      col1 col2
    1    1    4
    2    2    5
    3    3    6
    [1] 1 2 3
    

    But if we try to subset it without parentheses, then we're actually trying to index a function, and we get an error:

    isolate(
        reactive_df$col1
    )
    Error in reactive_df$col1 : object of type 'closure' is not subsettable
    
    0 讨论(0)
提交回复
热议问题