Я пытаюсь использовать foreach, и у меня возникают проблемы с возможностью масштабирования функции .combine. Например, вот простой скомбинировать функциюmake .combine function scaleable
MyComb <- function(part1,part2){
xs <- c(part1$x,part2$x)
ys <- c(part1$y,part2$y)
return(list(xs,ys))
}
Когда я использую эту функцию, чтобы объединить Еогеасп заявление с итератора, кроме 2 она возвращает его неправильно. Например, это работает:
x = foreach(i=1:2,.combine=MyComb) %dopar% list("x"=i*2,"y"=i*3)
Но не так:
x = foreach(i=1:3,.combine=MyComb) %dopar% list("x"=i*2,"y"=i*3)
Есть ли способ обобщить функции объединяются, чтобы сделать его масштабируемым до п итераций?
Спасибо! Таким образом, в моем реальном приложении каждый бит, поставленный в MyComb, представляет собой список с кучей элементов, каждый из которых является матрицей. Я хочу, чтобы (..., вдоль = 3) каждая матрица с тем же именем из исходного списка и, наконец, возвращала большой список с этими массивами. У меня возникли проблемы с тем, как это сделать с вашим решением MyComb2. Есть идеи? – scottyaz
@scottyaz Возможно, просто замените 'unlist (...)' на 'abind (..., вдоль = 3)', но без создания рабочего примера я не уверен. Результат 'sapply (dots, '[[', e)' - это список компонентов с именем «e» из каждой части. 'abind' может принимать список как свой аргумент, поэтому он должен работать с тем, что возвращается из' sapply'. –
sapply (точки, '[[', e, simplify = F) делает трюк! – scottyaz