Как применить функцию между элементами 2 списков в R? - PullRequest
2 голосов
/ 01 ноября 2019

Представьте, что у вас есть эти переменные:

> a <- list(matrix(1:25, 5, 5, byrow = TRUE), matrix(31:55, 5, 5, byrow = TRUE))
> b <- list(rep(1, 5), rep(2, 5))
> a
[[1]]
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    6    7    8    9   10
[3,]   11   12   13   14   15
[4,]   16   17   18   19   20
[5,]   21   22   23   24   25

[[2]]
     [,1] [,2] [,3] [,4] [,5]
[1,]   31   32   33   34   35
[2,]   36   37   38   39   40
[3,]   41   42   43   44   45
[4,]   46   47   48   49   50
[5,]   51   52   53   54   55

> b
[[1]]
[1] 1 1 1 1 1

[[2]]
[1] 2 2 2 2 2

Я хочу закончить примерно так:

     [,1] [,2] [,3] [,4] [,5]
[1,]    1    1    1    1    1
[2,]    1    2    3    4    5
[3,]    6    7    8    9   10
[4,]   11   12   13   14   15
[5,]   16   17   18   19   20
[6,]   21   22   23   24   25

     [,1] [,2] [,3] [,4] [,5]
[1,]    2    2    2    2    2
[2,]   31   32   33   34   35
[3,]   36   37   38   39   40
[4,]   41   42   43   44   45
[5,]   46   47   48   49   50
[6,]   51   52   53   54   55

Итак, это похоже на Python zip -как функция, а затем применить rbind. Есть идеи?

Ответы [ 3 ]

2 голосов
/ 01 ноября 2019

Или вы можете попробовать:

lapply(1:length(a),function(i)rbind(b[[i]],a[[i]]))

Предполагая длину (a) == длина (b)

2 голосов
/ 01 ноября 2019

Опция Map из base R

Map(rbind, b, a)
1 голос
/ 01 ноября 2019

Один из вариантов - использовать пакет purrr.

library(purrr)

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