Cómo corregir en R: el objeto (lista) no se puede obligar a escribir ‘doble’

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:

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:

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:

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:

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:

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 *