codememo

오류: 'closure' 유형의 개체가 하위 집합 테이블이 아닙니다.

tipmemo 2023. 6. 7. 22:55
반응형

오류: 'closure' 유형의 개체가 하위 집합 테이블이 아닙니다.

저는 마침내 스크랩을 위한 코드를 알아낼 수 있었습니다.정상적으로 작동하는 것 같더니 다시 실행했을 때 갑자기 다음과 같은 오류 메시지가 표시되었습니다.

Error in url[i] = paste("http://en.wikipedia.org/wiki/", gsub(" ", "_",  : 
  object of type 'closure' is not subsettable

나는 내 코드에서 아무것도 변경하지 않았기 때문에 왜 그런지 잘 모르겠습니다.

조언 부탁드립니다.

library(XML)
library(plyr)

names <- c("George Clooney", "Kevin Costner", "George Bush", "Amar Shanghavi")

for(i in 1:length(names)) {
    url[i] = paste('http://en.wikipedia.org/wiki/', gsub(" ","_", names[i]) , sep="")

    # some parsing code
}

일반적으로 이 오류 메시지는 함수에서 인덱싱을 사용하려고 시도했음을 의미합니다.예를 들어 이 오류 메시지를 재생성할 수 있습니다.

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

오류 메시지에 언급된 폐쇄는 함수가 호출될 때 변수를 저장하는 함수 및 환경입니다.


이 특정한 경우, Joshua가 언급했듯이, 당신은 변수로 함수에 액세스하려고 합니다.다음과 같은 변수를 정의하는 경우url그러면 오류가 사라집니다.

일반적으로 base-R 함수 뒤에 변수 이름을 지정하는 것은 피해야 합니다. (변수 호출이 이 오류의 일반적인 원인입니다.)


연산자 또는 키워드의 부분 집합을 설정하려고 할 때 관련된 오류가 몇 가지 있습니다.

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

이 문제가 발생하는 경우shiny가장 가능성이 높은 원인은 당신이 당신과 함께 일하려고 하기 때문입니다.reactive괄호를 사용하는 함수로 호출하지 않는 식입니다.

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

우리는 종종 반응식을 데이터 프레임처럼 반짝반짝하게 사용하지만, 실제로는 데이터 프레임(또는 다른 객체)을 반환하는 함수입니다.

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

그러나 괄호 없이 부분 집합을 설정하려고 하면 실제로 함수를 인덱싱하려고 하면 오류가 발생합니다.

isolate(
    reactive_df$col1
)
Error in reactive_df$col1 : object of type 'closure' is not subsettable

당신은 벡터를 정의하지 않고,url서브셋을 시도하기 전에. url기본 패키지의 함수이기도 합니다.url[i]그 함수의 부분 집합을 시도하는 중...말도 안 되는 소리야

당신은 아마도 정의했을 것입니다.url이전 R 세션에서 해당 코드를 스크립트에 복사하는 것을 잊었습니다.

유사한 오류가 발생한 경우 경고: $의 오류: 'closure' 유형의 개체가 하위 집합 테이블이 아닙니다 [스택 추적을 사용할 수 없음].

예를 들어 ::를 사용하여 해당 패키지 이름을 추가하면 됩니다.

태그 대신(...)

write shiny:slink(...)

정의되지 않은 변수를 의미할 수 있습니다.

이 문제가 발생하여 이벤트 반응 내부의 UI 요소를 제거하려고 했습니다.

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

이 오류가 발생했지만 제거 중이 아닙니다.UI 요소 라인, 어떤 이유에서인지 다음 관찰자에 있었습니다.제거하기이벤트 Reactive에서 UI 메서드를 사용하여 다른 곳에 배치하면 이 오류가 제거되었습니다.

당신이 의도했던 것 같아요.url[i] <- paste(...

url[i] = paste(... 그다면교체로 대체합니다.=와 함께<-.

언급URL : https://stackoverflow.com/questions/11308367/error-in-my-code-object-of-type-closure-is-not-subsettable

반응형