*This error occurs if you try to perform a mathematic operation on a character vector. You can solve this error by converting the characters to numeric values using the as.numeric() function. For example,*

x <- c("2", "3", "4", "5") x_num <- as.numeric(x) sum(x_num)

*Alternatively, if the character values represent categories you can use the aggregate() function to group by the categories.*

*This tutorial will go through the error in detail with code examples.*

## Example #1

Let’s look at an example to reproduce the error.

# Define a character vector x <- c("2", "3", "4", "5") # Attempt to calculate sum sum(x)

Let’s run the code to see what happens:

Error in sum(x) : invalid 'type' (character) of argument

The error occurs because mathematical operations like `sum()`

are only suitable for numeric vectors. The vector `x`

is of a character vector, which we can confirm using the `class()`

function.

class(x)

[1] "character"

### Solution

We can solve the error by converting the `character`

vector to a `numeric`

vector using the `as.numeric()`

function. Let’s look at the revised code:

x <- c("2", "3", "4", "5") x_num <- as.numeric(x) sum(x_num)

Let’s run the code to get the sum:

[1] 14

We can confirm that `x_num`

is a numeric vector using the `class()`

function:

class(x_num)

[1] "numeric"

## Example #2

Let’s look at a second example to reproduce the error:

# Define data frame df <- data.frame(fruit=c('pineapple', 'apple', 'pineapple', 'blueberry', 'apple', 'apple', 'pear', 'blueberry'), amount_sold=c(75, 50, 89, 76, 45, 98, 58, 64)) # Calculate some of values in fruit column sum(df$fruit)

Let’s run the code to see what happens:

Error in sum(df$fruit) : invalid 'type' (character) of argument

The error occurs because the column `'fruit'`

is a character column, which we can confirm using the `class()`

function:

class(df$fruit)

[1] "character"

### Solution

We can solve the error by only using mathematical operations with numeric vectors. We could use the `sum()`

function on the `amount_sold`

column as it is numeric.

df <- data.frame(fruit=c('pineapple', 'apple', 'pineapple', 'blueberry', 'apple', 'apple', 'pear', 'blueberry'), amount_sold=c(75, 50, 89, 76, 45, 98, 58, 64)) sum(df$amount_sold)

[1] 555

We can also use the aggregate function to group the rows in the data frame by `fruit`

and calculate the sum of the `amount_sold`

for each category.

aggregate(amount_sold ~ fruit, df, sum)

Let’s run the code to see the result:

fruit amount_sold 1 apple 193 2 blueberry 140 3 pear 58 4 pineapple 164

We successfully summed up the amount sold for each type of fruit in the data frame.

## Summary

Congratulations on reading to the end of this tutorial!

For further reading on R-related errors, go to the articles:

- How to Solve R Error in sort.int(x, na.last = na.last, decreasing = decreasing, …) : ‘x’ must be atomic
- How to Solve R Error: Arguments imply differing number of rows
- How to Solve R Error: more columns than column names

Go to the online courses page on R to learn more about coding in R for data science and machine learning.

Have fun and happy researching!

Suf is a senior advisor in data science with deep expertise in Natural Language Processing, Complex Networks, and Anomaly Detection. Formerly a postdoctoral research fellow, he applied advanced physics techniques to tackle real-world, data-heavy industry challenges. Before that, he was a particle physicist at the ATLAS Experiment of the Large Hadron Collider. Now, he’s focused on bringing more fun and curiosity to the world of science and research online.