lapply / purrr::map 类似默认允许访问索引的函数?

lapply / purrr::map like function that allows access to the index by default?

有个workaround to allow access the index inside a s/lapply

例如

x <- list(a=11,b=12,c=13) 
lapply(seq_along(x), function(y, n, i) { paste(n[[i]], y[[i]]) }, y=x, n=names(x))

是否有像 s/lapply(或像 purrr::map())这样的函数允许以最简单的方式访问索引,我想这将是简单地将其所需的名称提供给初始函数调用,仅此而已;

map_with_index <- function(.x, .f, index) {
  # Same as purrr::map()
  # ..but whatever string is provided to 'index' parameter becomes the index
  # and is accessible inside the function
  }

是否已经存在某些东西,或者是否可以定义一个执行此操作的自定义函数?

注意:有人可能会争辩说上面的 s/lapply 技术达到了要求。但相反的论点是,它甚至在 MRE 中也增加了不必要的复杂性,更不用说在复杂的现实生活环境中了,因此,简化是有价值的。

您需要查看 purrr::imap 函数族。这是一个简单的例子:

set.seed(123)
s <- sample(10)
purrr::imap_chr(s, ~ paste0(.y, ": ", .x))

输出

[1] "1: 3"  "2: 10" "3: 2"  "4: 8"  "5: 6"  "6: 9"  "7: 1"  "8: 7"  "9: 5"  "10:4"