Есть несколько способов добиться этого, в зависимости от того, какой тип объекта вы хотите получить.
Один из способов - использовать base::expand.grid
и purrr::pmap
, например:
percentiles = list(3,5,7)
iris_list %>%
map("Sepal.Length") %>%
expand.grid(percentiles) %>%
pmap(~ntile(..1,..2))
Во-первых, вам нужна только переменная Sepal.Length
из всех ваших наборов данных, поэтому вы используете purrr::map
для их получения.
Затем expand.grid
создает фрейм данных всех комбинаций своих параметров. Здесь, с 2 списками из 3 членов, он вернул бы фрейм данных 3х3 = 9 строк: setosa 3
, versicolor 3
, virginica 3
, setosa 5
, ...
Наконец, pmap
может выполнить итерации по фрейму данных и применить функцию ntile
с первым столбцом (iris_list
) в качестве первого аргумента и вторым столбцом (percentiles
) в качестве второго аргумента. К сожалению, purrr очень плохо работает с именами, но кажется, что это нарочно.
РЕДАКТИРОВАТЬ:
Ваше редактирование как-то другой вопрос, так что вот еще один ответ:
iris_list %>%
map(~mutate(.x, n3=ntile(Sepal.Length,3)),
n5=ntile(Sepal.Length,5)), n7=ntile(Sepal.Length,7)))