lapply(ll, replace, 1, 9)
Это идет вектор за вектором, и replace
s 1-й элемент с 9. (Аргументы замены: (данные, список индексов, список значений), с рециклированным списком значенийбыть равным списку индексов.)
replace()
определяется как:
replace <- function (x, list, values) {
x[list] <- values
x
}
, поэтому вы также можете использовать этот метод.
lapply(ll, function(x) { x[1] <- 9 ; x })
Вы также можете использовать либо с purrr::map()
:
purrr::map(ll, ~{ .x[1] <- 9 ; .x })
purrr::map(ll, replace, 1, 9)
Сражение лицом к лицу (не лучшая настройка микробенчмарков в мире, хотя):
microbenchmark::microbenchmark(
purr_repl = purrr::map(ll, replace, 1, 9),
purr_op = purrr::map(ll, ~{ .x[1] <- 9 ; .x }),
lapp_repl = lapply(ll, replace, 1, 9),
lapp_op = lapply(ll, function(x) { x[1] <- 9 ; x }),
Map = Map(function(x, y)c(x, y[-1]), 9, ll)
)
## Unit: microseconds
## expr min lq mean median uq max neval
## purr_repl 27.510 29.7555 49.98242 31.4735 33.4805 1506.400 100
## purr_op 84.415 86.9550 125.07364 90.0665 98.9465 2423.406 100
## lapp_repl 4.422 4.8350 5.94472 5.1965 5.5930 34.947 100
## lapp_op 4.672 5.4250 19.14590 5.9045 6.5015 1215.477 100
## Map 10.670 12.2490 28.94712 13.5935 14.7170 1238.311 100