Есть ли что-нибудь вроде sapply
в библиотеке multicore
? Или мне нужно unlist(mclapply(..))
для этого?multicore :: sapply?
Если этого не существует: какими были бы рассуждения?
Спасибо заранее и извините, если это глупый вопрос!
Есть ли что-нибудь вроде sapply
в библиотеке multicore
? Или мне нужно unlist(mclapply(..))
для этого?multicore :: sapply?
Если этого не существует: какими были бы рассуждения?
Спасибо заранее и извините, если это глупый вопрос!
Если вы посмотрите на код sapply
(и его вспомогательной функции simplify2array
) вы увидите, что unlist(obj)
именно то, что будет сделано в том случае, когда OBJ представляет собой список элементов все length==1
. Однако sapply
намного сложнее, чем просто список списков. Что еще очень неясно, какая проблема вы пытаетесь решить.
В библиотеке parallel
, у вас есть mcmapply
, которые, как mapply
в base
, принимает SIMPLIFY
аргумент. По умолчанию это TRUE
. Вот пример использования:
library(parallel)
mcmapply(sqrt,split(1:8,1:8))
# 1 2 3 4 5 6 7 8
# 1.000000 1.414214 1.732051 2.000000 2.236068 2.449490 2.645751 2.828427
Сравните это с использованием mclapply
.
mclapply(split(1:8,1:8),sqrt)
# $`1`
# [1] 1
#
# $`2`
# [1] 1.414214
# ...
В некоторых отношениях, однако, я согласен с тем, что странно, что нет 'mcsapply'. Я всегда думал, что странно, что вы не можете передать аргумент 'SIMPLIFY' для' lapply', но я подозреваю, что это причина, по которой вы не можете передать аргумент 'SIMPLIFY' для' mclapply'. – nograpes
Разве это не тот случай, когда mclapply действует в списках и поэтому возвращает списки по умолчанию так же, как sapply действует на векторы, а упрощение - по умолчанию? – russellpierce
@rpierce Фактически 'sapply' также действует и в списках (и' lapply' также работает и с векторами). Единственная разница между 'sapply' и' lapply' - это структура возвращаемого значения. 'lapply' всегда будет * возвращать список, а' sapply' может возвращать вектор или список. Имена возвращаемого значения также различаются. Я считаю, что было бы разумно создать «mcsapply», который имел бы такое же поведение, как «sapply». – nograpes