How can I perform an operation (like subsetting or adding a calculated column) on each imputed dataset in an object of class `mids` from R's package `mice`? I would like the result to still be a `mids` object.

**Edit: Example**

```
library(mice)
data(nhanes)

# create imputed datasets
imput = mice(nhanes)

```

The imputed datasets are stored as a list of lists

```
imput$imp

```

where there are rows only for the observations with imputation for the given variable. 

The original (incomplete) dataset is stored here:

```
imput$data

```

For example, how would I create a new variable calculated as `chl/2` in each of the imputed datasets, yielding a new `mids` object?
['https://Stackoverflow.com/questions/26667162', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/1212811/']
This can be done easily as follows -

Use `complete()` to convert a mids object to a long-format data.frame:

```
 long1 <- complete(midsobj1, action='long', include=TRUE)

```

Perform whatever manipulations needed:

```
 long1$new.var <- long1$chl/2
 long2 <- subset(long1, age >= 5)

```

use `as.mids()` to convert back manipulated data to mids object:

```
 midsobj2 <- as.mids(long2)

```

Now you can use `midsobj2` as required. Note that the `include=TRUE` (used to include the original data with missing values) is needed for `as.mids()` to compress the long-formatted data properly. Note that prior to mice v2.25 there was a bug in the as.mids() function (see this post <https://stats.stackexchange.com/a/158327/69413>)

EDIT: According to this answer <https://stackoverflow.com/a/34859264/4269699> (from what is essentially a duplicate question) you can also edit the mids object directly by accessing $data and $imp. So for example 

```
 midsobj2<-midsobj1
 midsobj2$data$new.var <- midsobj2$data$chl/2
 midsobj2$imp$new.var <- midsobj2$imp$chl/2

```

You will run into trouble though if you want to subset $imp or if you want to use $call, so I wouldn't recommend this solution in general.
There's a function for this in the `basecamb` package:

```
library(basecamb)
apply_function_to_imputed_data(mids_object, function)

```