Это можно сделать с помощью Map
, чтобы получить последовательность индексов из столбцов 'x', установить для этого столбец 'value' в столбце 'value', получить mean
и создать значение 'mean.value'столбец в' x '
x['mean.value'] <- sapply(do.call(Map, c(f = `:`, x)), function(x) mean(y$value[x]))
#
# start end mean.value
#1 1 2 0.3188163
#2 3 4 0.7405306
Его также можно упростить как
x['mean.value'] <- mapply(function(i, j) mean(y$value[i:j]), x$start, x$end)
Аналогичным вариантом с tidyverse
будет использование map2
(от purrr
)
library(tidyverse)
x %>%
mutate(mean.value = map2_dbl(start, end, ~ mean(y$value[.x:.y])))