# imap

##### Apply a function to each element of a vector, and its index

`imap_xxx(x, ...)`

, an indexed map, is short hand for
`map2(x, names(x), ...)`

if `x`

has names, or `map2(x, seq_along(x), ...)`

if it does not. This is useful if you need to compute on both the value
and the position of an element.

##### Usage

`imap(.x, .f, ...)`imap_lgl(.x, .f, ...)

imap_chr(.x, .f, ...)

imap_int(.x, .f, ...)

imap_dbl(.x, .f, ...)

imap_dfr(.x, .f, ..., .id = NULL)

imap_dfc(.x, .f, ..., .id = NULL)

iwalk(.x, .f, ...)

##### Arguments

- .x
A list or atomic vector.

- .f
A function, formula, or atomic vector.

If a

**function**, it is used as is.If a

**formula**, e.g.`~ .x + 2`

, it is converted to a function. There are three ways to refer to the arguments:For a single argument function, use

`.`

For a two argument function, use

`.x`

and`.y`

For more arguments, use

`..1`

,`..2`

,`..3`

etc

This syntax allows you to create very compact anonymous functions.

If

**character vector**,**numeric vector**, or**list**, it is converted to an extractor function. Character vectors index by name and numeric vectors index by position; use a list to index by position and name at different levels. Within a list, wrap strings in`get-attr()`

to extract named attributes. If a component is not present, the value of`.default`

will be returned.- ...
Additional arguments passed on to

`.f`

.- .id
If not

`NULL`

a variable with this name will be created giving either the name or the index of the data frame.

##### Value

A vector the same length as `.x`

.

##### See Also

##### Examples

```
# NOT RUN {
# Note that when using the formula shortcut, the first argument
# is the value, and the second is the position
imap_chr(sample(10), ~ paste0(.y, ": ", .x))
iwalk(mtcars, ~ cat(.y, ": ", median(.x), "\n", sep = ""))
# }
```

*Documentation reproduced from package purrr, version 0.2.5, License: GPL-3 | file LICENSE*