En este artículo, buscamos la forma de corregir el error «(lista) del objeto no se puede obligar a escribir el error ‘doble» en el lenguaje de programación R.
Uno de los errores más comunes que un programador puede enfrentar en R es:
Error: (list) object cannot be coerced to type 'double'
Este error puede ocurrir cuando intentamos transformar una lista de múltiples elementos en numéricos sin usar la función unlist() .
Cuándo puede ocurrir este error:
Primero vamos a crear una lista:
Ejemplo:
R
# Make a list myList <- list(10:25, 16:29, 10:12, 25:26, 32) # Print the list myList
Producción:
Ahora convertiremos la lista en su vector numérico equivalente usando la función as.numeric() . La sintaxis de esta función se da a continuación:
Sintaxis: as.numeric(vect)
Parámetro: vect: un vector de caracteres
R
# Make a list myList <- list(10:25, 16:29, 10:12, 25:26, 32) # Convert list to numeric vector numeric_vector <- as.numeric(x)
Producción:
Dado que no hemos utilizado la función unlist(), es por eso que el compilador produjo el error: «objeto que no se puede obligar a escribir un mensaje de error ‘doble'».
Cómo corregir el error:
Este error se puede corregir empaquetando primero la lista en un vector usando la función unlist() y luego pasándola a la función numeric(). La sintaxis de la función unlist() se proporciona a continuación:
Sintaxis: unlist(lista)
Parámetro: lista: Representa una lista en R
Tipo de retorno: Devuelve un vector
R
# Make a list myList <- list(10:25, 16:29, 10:12, 25:26, 32) # Convert list to numeric numeric_vector <- as.numeric(unlist(x)) # Print the numeric equivalent print(numeric_vector)
Producción:
Ejemplo:
Para verificar si numeric_vector es de tipo numérico, podemos usar la función class(). La sintaxis de la función de clase se da a continuación:
Sintaxis: clase (x)
Parámetro: Aquí, x representa un objeto R
Tipo de devolución: devuelve el tipo del objeto pasado, es decir, x (vector, lista, etc.)
R
# Make a list myList <- list(10:25, 16:29, 10:12, 25:26, 32) # Convert list to numeric numeric_vector <- as.numeric(unlist(x)) # Print the numeric equivalent class(numeric_vector)
Producción:
Además, para verificar si myList y numeric_vector contienen el mismo número de elementos, podemos usar una combinación de la función sum() y lengths() para myList y la función length() para numeric_vector.
La sintaxis de la función sum() se proporciona a continuación:
Sintaxis: longitud (x)
Parámetro: aquí, x representa un objeto R como un vector o una lista
Tipo de retorno: Devuelve el número de elementos presentes en x
R
# Make a list myList <- list(10:25, 16:29, 10:12, 25:26, 32) # Convert list to numeric numeric_vector <- as.numeric(unlist(x)) # Print the total number of # elements in the list sum(lengths(myList)) # Print the total number of # elements in the vector length(numeric_vector)
Producción: