I've just started with R and I've executed these statements:

```library(datasets)
s <- split(airquality,airquality\$Month)
sapply(s, function(x) {colMeans(x[,c("Ozone", "Solar.R", "Wind")], na.rm = TRUE)})
lapply(s, function(x) {colMeans(na.omit(x[,c("Ozone", "Solar.R", "Wind")])) })
```

For the sapply, it returns the following:

```             5         6          7          8         9
Ozone    23.61538  29.44444  59.115385  59.961538  31.44828
Solar.R 181.29630 190.16667 216.483871 171.857143 167.43333
Wind     11.62258  10.26667   8.941935   8.793548  10.18000
```

And for lapply, it returns the following:

```\$`5`
Ozone   Solar.R      Wind
24.12500 182.04167  11.50417

\$`6`
Ozone   Solar.R      Wind
29.44444 184.22222  12.17778

\$`7`
Ozone    Solar.R       Wind
59.115385 216.423077   8.523077

\$`8`
Ozone   Solar.R      Wind
60.00000 173.08696   8.86087

\$`9`
Ozone   Solar.R      Wind
31.44828 168.20690  10.07586
```

Now, my question would be, why are the returned values similar, but not the same? Isn't na.rm = TRUE and na.omit supposed to be doing the exact same thing? Omit the missing values and calculate the mean only for the values that we have? And in that case, shouldn't I have had the same values in both result sets?

Jul 22, 2022 599 views

## Difference between the == and %in% operators in R

percent in percent "returns a vector of ...READ MORE

## Difference between the == and %in% operators in R

According to help('percent in percent'), percent in ...READ MORE

## The difference between Map() and map () from Purrr package in R

The tilde just indicates to the map ...READ MORE

## What's the difference between "*" and "+" in lm() in R?

Lm is a fitting method for linear ...READ MORE

## How to manually find the minors of a matrix in R programming?

I have to write a function that ...READ MORE

## Big Data transformations with R

Dear Koushik, Hope you are doing great. You can ...READ MORE