Масштабировать один список матриц в другой - PullRequest
2 голосов
/ 07 апреля 2020

У меня есть два списка матриц с 2 столбцами, подобных этим:

> stck.list
[[1]]
             [,1]         [,2]
[1,]  0.000000000  0.000000000
[2,]  0.001082767 -0.008137698
[3,] -0.005346008  0.013462373
[4,]  0.012179531  0.046037670
[5,]  0.035469135  0.033196833

[[2]]
             [,1]         [,2]
[1,]  0.000000000 0.0000000000
[2,]  0.004100097 0.0001743182
[3,]  0.001005368 0.0008254498
[4,]  0.011574428 0.0077799754
[5,] -0.006285223 0.0063603749

> stck.list.2
[[1]]
            [,1]         [,2]
[1,] 0.000000000  0.000000000
[2,] 0.003678552  0.009008164
[3,] 0.007416574  0.003603477
[4,] 0.005194380 -0.004445452
[5,] 0.002181469 -0.005857811

[[2]]
              [,1]          [,2]
[1,]  0.0000000000  0.0000000000
[2,]  0.0020240535 -0.0011925407
[3,] -0.0003965362  0.0013492189
[4,]  0.0053106932  0.0001212016
[5,]  0.0023810324  0.0054779249

И мне нужно изменить масштаб значений из первого столбца из первой матрицы из первого списка в первый столбец из первой матрицы из второго списка, и т. Д. c. Вручную я могу сделать это для каждого столбца отдельно для одной матрицы, например:

sc_x.1 <- scales::rescale(stck.list[[1]][,1], to = range(stck.list.2[[1]][,1]))
sc_y.1 <- scales::rescale(stck.list[[1]][,2], to = range(stck.list.2[[1]][,2]))

Реально ли это сделать? Таким образом, главная цель состоит в том, чтобы поставить каждую соответствующую матрицу из двух списков на соответствующих осях. Может быть, есть более простой способ сделать это?

1 Ответ

1 голос
/ 07 апреля 2020

Мы можем использовать карту

Map(function(x, y) scales::rescale(x, to = range(y)) , stck.list, stck.list.2)
...