Я хотел бы преобразовать следующее вложенное для цикла
first <- c(1, 2, 3)
second <- c(1, 2, 3)
dummy = matrix(double(), len(first), len(second))
c <- list()
c$sum <- dummy
c$times <- dummy
for (i in 1:len(first)) {
for (j in 1:len(second)) {
c$sum[i, j] <- first[i] + second[j]
c$times[i, j] <- first[i] * second[j]
}
}
c
в код, используя foreach, и получить в результате тот же список матриц.Я пробовал много разных вещей, но ближайший «результат» таков:
x <- foreach(b = second, .combine = "cbind") %:% foreach(a = first, .combine = "c") %do% {
c <- list()
c$sum <- a+b
c$times <- a*b
out <- c
}
x
Как правильно составить этот список матриц с помощью foreach?
РЕДАКТИРОВАТЬ: Одна из возможностей - использовать результат и преобразоватьэто после вызова foreach:
res <- list()
res$sum <- x[rownames(x)=="sum", ]
rownames(res$sum) <- NULL
colnames(res$sum) <- NULL
res$times <- x[rownames(x)=="times", ]
rownames(res$times) <- NULL
colnames(res$times) <- NULL
res
Как «параметризовать» foreach, чтобы не было необходимости преобразовывать результаты?