Для этого можно использовать purrr::imap
, который передает индекс каждого элемента в списке в качестве второго аргумента .y
функции:
library(purrr); library(dplyr)
imap(l1, ~ mutate(.x, i = .y))
#[[1]]
# x y i
#1 ayyy -1.761054 1
#2 ayyy -2.123735 1
#3 ayyy -1.525554 1
#4 ayyy -1.756684 1
#5 ayyy -1.686749 1
#[[2]]
# x y i
#1 lmao 0.05505287 2
#2 lmao -0.33393283 2
#3 lmao -1.91543274 2
#4 lmao -1.03591717 2
#5 lmao 0.67857511 2
#6 lmao 0.61049477 2
Что эквивалентно базовому решению R с использованием Map
:
Map(function(.x, .y) mutate(.x, i = .y), l1, seq_along(l1))
Обратите внимание, с помощью lapply
или apply
у вас нет возможности отслеживать индекс каждого элемента во время их циклического просмотра.