ОБНОВЛЕНИЕ: разделенное и более удобочитаемое решение:
calA_fun <- function (list_A) {
Reduce(c, list_to_sums(list_A))
}
list_to_sums <- function (list_A) {
lapply(val_and_sqrt(list_A), get_sums)
}
val_and_sqrt <- function (list_A) {
lapply(list_A, function (x) {
list(val = x, sqrt = sqrt(x))
})
}
get_sums <- function(l) {
lapply(l$val, function(x) { x + l$sqrt })
}
(оригинальное решение)
calA_fun <- function(list_A) {
Reduce(
c, # make flat list
lapply(
lapply(list_A, function (x) { list(x, sqrt(x)) }), # calculate sqrt
function(x) { # process every outer-level list item
lapply(x[[1]], function (y) { y + x[[2]] }) # replace with vector of each square root + raw value y
}
)
)
}