У меня большой список матриц с разными столбцами, и я хотел бы сложить эти матрицы, считая 0, если столбец X не существует в одной матрице.
Если бы вы использовали функцию rbind.fill
из plyr, я бы хотел что-то подобное, но с функцией суммы. Конечно, я мог бы создать функцию для этого, но я думаю о нативной функции, эффективно запрограммированной в Frotrain или C из-за моих больших данных.
Вот пример:
Это простой пример, где у меня есть те же столбцы:
aa <- list(
m1 = matrix(c(1,2,3,4,5,6,7,8,9), nrow = 3, dimnames = list(c(1,2,3),c('a','b','c'))),
m2 = matrix(c(1,2,3,4,5,6,7,8,9), nrow = 3, dimnames = list(c(1,2,3),c('a','b','c')))
)
aa
Reduce('+',aa)
Давать результаты:
> aa
$m1
a b c
1 1 4 7
2 2 5 8
3 3 6 9
$m2
a b c
1 1 4 7
2 2 5 8
3 3 6 9
> Reduce('+',aa)
a b c
1 2 8 14
2 4 10 16
3 6 12 18
И с моими данными:
bb <- list(
m1 = matrix(c(1,2,3,7,8,9), nrow = 3, dimnames = list(c(1,2,3),c('a','c'))),
m2 = matrix(c(1,2,3,4,5,6,7,8,9), nrow = 3, dimnames = list(c(1,2,3),c('a','b','c')))
)
bb
Reduce('+',bb)
Здесь я хотел бы иметь b = c (0,0,0) в первой матрице для их суммирования.
> bb
$m1
a c
1 1 7
2 2 8
3 3 9
$m2
a b c
1 1 4 7
2 2 5 8
3 3 6 9
Большое спасибо!
Xevi