Извлечь минимальную матрицу из набора матриц внутри списка в r - PullRequest
0 голосов
/ 11 мая 2018

У меня есть список с N-матрицей в R:

mylist <- list(a=matrix(rnorm(1:10), ncol=2), b=matrix(rnorm(1:10), ncol=2), c=matrix(rnorm(1:10), ncol=2))

Я хотел бы извлечь матрицу с минимальными значениями в каждой (i,j) для трех матриц (в моем реальном примере все матрицы имеют одинаковые размеры).

Я могу сделать это вручную с pmin(a,b,c), но это было бы непрактично для моего случая, потому что у меня в списке несколько матриц.

Я пытался с

lapply(mylist, function(x) pmin(x))  

но я получаю оригинальный список. Есть предложения?

Спасибо. Приветствия.

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Попробуйте это решение:

am <- matrix(rnorm(1:10), ncol=2)
bm <- matrix(rnorm(1:10), ncol=2)
cm <- matrix(rnorm(1:10), ncol=2)

mylist <- list(a=am, b=bm, c=cm)

working <- pmin(am, bm, cm) # What you stated is working

new <- do.call(pmin, mylist)  # Calling for all elements of a list

identical(working, new) # verify if the new answer outputs the same

Надеюсь, это поможет! :)

0 голосов
/ 11 мая 2018

Вы можете использовать Reduce

 # creating a list of matrices
    set.seed(1)
    mylist <- list(a=matrix(rnorm(1:10), ncol=2), 
                   b=matrix(rnorm(1:10), ncol=2), 
                   c=matrix(rnorm(1:10), ncol=2))


# getting min
> Reduce("pmin", mylist)
           [,1]       [,2]
[1,] -0.6264538 -0.8204684
[2,]  0.1836433 -0.1557955
[3,] -0.8356286 -1.4707524
[4,] -2.2146999 -0.4781501
[5,]  0.3295078 -0.3053884
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...