Скажем, у меня есть tibble
с двумя столбцами: групповой переменной (grp) и списком-столбцом
содержащие матрицы одинаковой размерности (mat).
mat1 <- matrix(c(2, 0, 0, 0), nrow = 2)
mat2 <- matrix(c(0, 0, 0, 0), nrow = 2)
mat3 <- matrix(c(0, 0, 0, 2), nrow = 2)
mat4 <- matrix(c(0, 0, 0, 0), nrow = 2)
df <- tibble(grp = c('a', 'a', 'b', 'b'),
mat = list(mat1, mat2, mat3, mat4))
Edit:
Я хочу вычислить среднюю матрицу по группам и добавить ее в качестве нового столбца списка. То есть Новый столбец должен быть:
list(matrix(c(1, 0, 0, 0), nrow = 2),
matrix(c(1, 0, 0, 0), nrow = 2),
matrix(c(0, 0, 0, 1), nrow = 2),
matrix(c(0, 0, 0, 1), nrow = 2))
Лучшее, что я могу сделать, это:
df_out <- df %>%
group_by(grp) %>%
mutate(n = n(),
mean_mat = list(Reduce('+', mat) / n)) %>%
ungroup()
Это работает, но я пытаюсь понять, почему необходим вызов list
, а также пытаюсь найти альтернативный подход (либо tidyverse, либо base R), который, возможно, проще.