dplyr split-apply-Объединить со столбцом списка - PullRequest
0 голосов
/ 27 августа 2018

Скажем, у меня есть 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), который, возможно, проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...