Необходимо агрегировать переменные в списке - PullRequest
0 голосов
/ 06 ноября 2019

m - это список из 2, как показано ниже:

   [[1]]
     [,1]      [,2]    
[1,] "a"        "b"

[[2]]
     [,1]     
[1,] "a"
[2,] "b"

Теперь мне нужно использовать эти подсписки в моей функции group_by_at, так что есть 3 группы по (s): (1):по a, (2): по b и (3) по «a & b». Мне постоянно не удавалось добиться этого. Функция group_by_at выдает мне ошибку: должна вычислять позиции или имена столбцов, а не список. Любая помощь будет принята с благодарностью.

Спасибо!

1 Ответ

0 голосов
/ 06 ноября 2019

Вот один способ, который может работать.

library(dplyr)
library(purrr)

map(m, function(x) map(seq(ncol(x)), function(y) 
       df %>% group_by_at(x[,y]) %>% summarise(sum = sum(c))))


#[[1]]
#[[1]][[1]]
# A tibble: 1 x 2
#      a   sum
#  <dbl> <int>
#1     1    15

#[[1]][[2]]
# A tibble: 2 x 2
#      b   sum
#  <dbl> <int>
#1     1     6
#2     2     9


#[[2]]
#[[2]][[1]]
# A tibble: 2 x 3
# Groups:   a [1]
#      a     b   sum
#  <dbl> <dbl> <int>
#1     1     1     6
#2     1     2     9

data

Использование его на данных этого образца

m <- list(matrix(c("a", "b"), ncol = 2), matrix(c("a", "b")))
df <- data.frame(a = 1, b = c(1, 1, 1, 2, 2), c = 1:5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...