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"
有个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"