Cómo corregir en R: el objeto de tipo ‘cierre’ no se puede subestablecer

En este artículo, discutiremos cómo corregir el error «el objeto de tipo ‘cierre’ no se puede subestablecer» en el lenguaje de programación R.

El error que uno puede enfrentar en R es:

object of type 'closure' is not subsettable

El compilador de R produce un error de este tipo cuando intentamos crear un subconjunto de una función. En R, podemos crear subconjuntos de una lista, un vector, etc., pero una función que tiene un tipo de cierre que no se puede dividir en subconjuntos.

Cuándo puede ocurrir este error:

Considere que tenemos una función en R que toma cada elemento de un vector como entrada y lo suma con 10:

R

# Define a function
Add <- function(x) {
  x <- x + 10
  return(x)
}

Agreguemos un código de controlador de menú que pueda llamar a esta función:

R

# Define a function
Add <- function(vect) {
  vect <- vect + 10
  return(vect)
}
 
# Define a vector
vect <- c(8, 9, 12, 14, 20)
 
# Calling Add function
Add(vect)

Producción:

 

Como puede ver en la salida, cada elemento del vector se suma con 10. Ahora, supongamos que tratamos de crear un subconjunto de esta función:

R

# Define a function
Add <- function(vect) {
  vect <- vect + 10
  return(vect)
}
 
# Define a vector
vect <- c(8, 9, 12, 14, 20)
 
# Try to access the second element
# of the function
Add[2]

Producción:

 

El compilador produce tal error porque no está permitido subconjunto de un objeto que tiene el cierre de tipo en R. Para confirmar que la función es de cierre de tipo podemos usar la función typeof() que tiene la siguiente sintaxis:

Sintaxis: tipo de(x)

Parámetros:

x: Representa los datos especificados

R

# Define a function
Add <- function(vect) {
  vect <- vect + 10
  return(vect)
}
 
# Define a vector
vect <- c(8, 9, 12, 14, 20)
 
# Print the type
typeof(Add)

Producción:

 

Cualquier función en R es de tipo cierre. Por ejemplo, intentemos crear un subconjunto de una función incorporada mediana() primero:

Sintaxis: mediana (x)

Parámetro: x: un vector

Tipo de retorno: Devuelve la mediana de los elementos vectoriales .

R

# Try to access the first element
median[1]

Producción:

 

Ahora crearemos un subconjunto de la función incorporada range():

Sintaxis: rango (x)

Parámetro: x: un vector

Tipo de retorno: Devuelve un rango

R

# Try to access the first element
range[1]

Producción:

 

Cómo arreglar este error:

Podemos corregir este error fácilmente al no subdividir la función. Por ejemplo, supongamos que queremos usar la función Add() para el segundo elemento del vector vect:

R

# Define a function
Add <- function(vect) {
  vect <- vect + 10
  return(vect)
}
 
# Define a vector
vect <- c(8, 9, 12, 14, 20)
 
# Try to access the second element
# of the function
Add(vect[2])

Producción:

 

Esta vez, el programa se compiló con éxito porque aquí estamos subdividiendo el vector en lugar de la función. Además, tenga en cuenta que podemos aplicar Add() en todo el vector:

R

# Define a function
Add <- function(vect) {
  vect <- vect + 10
  return(vect)
}
 
# Define a vector
vect <- c(8, 9, 12, 14, 20)
 
# Calling Add function
Add(vect)

Producción:

 

Publicación traducida automáticamente

Artículo escrito por bhuwanesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *