Open In App

How to Fix in R: (list) object cannot be coerced to type ‘double’

Last Updated : 31 Mar, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

In this article, we are looking towards the way to fix the “(list) object cannot be coerced to type ‘double” error in the R Programming language.

One of the most common errors that a programmer might face in R is:

Error: 
(list) object cannot be coerced to type 'double'

This error might occur when we try to transform a list of multiple elements into the numeric without using the unlist() function.

When this error might occur:

Let’s create a list first:

Example:

R




# Make a list
myList <- list(10:25, 16:29, 10:12, 25:26, 32)
 
# Print the list
myList


Output:

Output

Now we will convert the list into its numeric equivalent vector using as.numeric() function. The syntax of this function is given below:

Syntax: as.numeric(vect)

Parameter: vect: a vector of characters

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)


Output:

Output

Since we haven’t used the unlist() function that is why the compiler produced the error: “object that cannot be coerced to type a ‘double’ error message”.

How to Fix the Error:

This error can be fixed by first bundling the list into a vector using unlist() function and then passing it to the numeric() function. The syntax of the unlist() function is given below:

Syntax: unlist(list)

Parameter: list: It represents a list in R

Return Type: Returns a 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)


Output:

Output

Example:

To verify whether numeric_vector is of type numeric, we can use the class() function. The syntax of the class function is given below:

Syntax: class(x)

Parameter: Here, x represents a R object

Return Type: Returns the type of the passed object i.e, x (vector, list 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)


Output:

Output

Also, to verify whether myList and numeric_vector contain an equal number of elements we can use a combination of sum() and lengths() function for myList and length() function for numeric_vector.

The syntax of the sum() function is given below:

Syntax: length(x)

Parameter: Here, x represents a R object like a vector or list

Return Type: Returns the number of elements present in 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)


Output:

Output



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads