# How to Fix in R: argument is not numeric or logical: returning na

One warning you may encounter in R is:

```Warning message:
In mean.default(df) : argument is not numeric or logical: returning NA
```

This warning occurs when you attempt to calculate the mean of some object in R that is not numerical or logical.

This tutorial shares exactly how to handle this warning in practice.

### How to Reproduce the Warning

Suppose we create the following data frame in R:

```#create data frame
df <- data.frame(team=c('A', 'B', 'C', 'D', 'E'),
points=c(99, 90, 86, 88, 95),
assists=c(33, 28, 31, 39, 34),
rebounds=c(30, 28, 24, 24, 28))

#view data frame
df

team points assists rebounds
1    A     99      33       30
2    B     90      28       28
3    C     86      31       24
4    D     88      39       24
5    E     95      34       28
```

If we attempt to calculate the mean of a character column or if we attempt to calculate the mean of the entire data frame, we’ll receive a warning:

```#attempt to calculate mean of character column
mean(df\$team)

Warning message:
In mean.default(df\$team) : argument is not numeric or logical: returning NA

#attempt to calculate mean of entire data frame
mean(df)

Warning message:
In mean.default(df) : argument is not numeric or logical: returning NA
```

The mean() function only takes a numeric vector as an argument, which explains why we receive a warning in both scenarios.

### How to Handle the Warning

The way to handle this warning is to only use the mean() function with numeric vectors.

For example, we could calculate the mean of the points column since it’s numeric:

```#calculate mean of points column
mean(df\$points)

 91.6
```

Or we could use the sapply() function to calculate the mean of every column in the data frame:

```#calculate mean of every column in data frame
sapply(df, mean, 2)

team   points  assists rebounds
NA       90       33       28

Warning message:
In mean.default(X[[i]], ...) :
argument is not numeric or logical: returning NA```

We’re able to calculate the mean of each numeric column, but still receive a warning message since we attempted to calculate the mean of the ‘team’ character column.

To avoid this warning entirely, we could use the sapply() function with just the three numeric columns:

```#calculate mean of each numeric column
sapply(df[c('points', 'assists', 'rebounds')], mean, 2)
points  assists rebounds
90       33       28```

Notice that the mean of each numeric column is successfully shown and we receive no warning message.