Error en <mi código>: el objeto de tipo 'cierre' no se puede subconfigurar
Finalmente pude descifrar el código para mi scraping . Parecía estar funcionando bien y de repente, cuando lo ejecuté nuevamente, recibí el siguiente mensaje de error:
Error in url[i] = paste("http://en.wikipedia.org/wiki/", gsub(" ", "_", :
object of type 'closure' is not subsettable
No estoy seguro de por qué ya que no cambié nada en mi código.
Por favor avise.
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
}
En general, este mensaje de error significa que ha intentado utilizar la indexación en una función. Puede reproducir este mensaje de error con, por ejemplo
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
El cierre mencionado en el mensaje de error es (a grandes rasgos) la función y el entorno que almacena las variables cuando se llama a la función.
En este caso específico, como mencionó Joshua, está intentando acceder a la url
función como una variable. Si define una variable llamada url
, el error desaparece.
Como buena práctica, normalmente se debe evitar nombrar variables después de funciones base-R. (La llamada a variables data
es una fuente común de este error).
Hay varios errores relacionados al intentar crear subconjuntos de operadores o palabras clave.
`+`[1]
## Error in `+`[1] : object of type 'builtin' is not subsettable
`if`[1]
## Error in `if`[1] : object of type 'special' is not subsettable
Si tiene este problema en shiny
, la causa más probable es que esté intentando trabajar con una reactive
expresión sin llamarla como una función usando paréntesis.
library(shiny)
reactive_df <- reactive({
data.frame(col1 = c(1,2,3),
col2 = c(4,5,6))
})
Si bien a menudo trabajamos con expresiones reactivas en shiny como si fueran marcos de datos, en realidad son funciones que devuelven marcos de datos (u otros objetos).
isolate({
print(reactive_df())
print(reactive_df()$col1)
})
col1 col2
1 1 4
2 2 5
3 3 6
[1] 1 2 3
Pero si intentamos crear un subconjunto sin paréntesis, en realidad estamos intentando indexar una función y obtenemos un error:
isolate(
reactive_df$col1
)
Error in reactive_df$col1 : object of type 'closure' is not subsettable
No define el vector, url
antes de intentar crear un subconjunto. url
También es una función en el paquete base, por lo que url[i]
intentar crear un subconjunto de esa función... lo cual no tiene sentido.
Probablemente lo definiste url
en tu sesión anterior de R, pero olvidaste copiar ese código en tu script.
En caso de este error similar Advertencia: Error en $: el objeto de tipo 'cierre' no se puede subconfigurar [No hay seguimiento de pila disponible]
Simplemente agregue el nombre del paquete correspondiente usando ::, por ejemplo
en lugar de etiquetas (....)
escribir brillante::etiquetas(....)