【发布时间】:2015-11-11 21:40:03
【问题描述】:
我正在尝试将一个矩阵逐行映射到另一个矩阵。也许最好通过一个简单的例子来说明这一点:
让
startMatrix <- t(matrix( c(2.3, 1.2, 3.6, 6.9, 5.3, 6.7), nrow = 3, ncol = 2))
mapMatrix <- t(matrix( c(1, 1.3, 2, 2.5, 3, 5, 5.6, 6, 6.2, 7), nrow = 5, ncol = 2))
现在mapMatrix 用作startMatrix 的一种网格,即[1, 1.3, 2, 2.5, 3] 是startMatrix 第一行的网格,[5, 5.6, 6, 6.2, 7] 是startMatrix 第二行的网格。此外,startMatrix 被映射到其最近的小于他自己的元素,例如2.3 转到 2 和 6.7 到 6.2。
因此,当将startMatrix 映射到mapMatrix 时,结果应该是如下所示的矩阵:
result = [2, 1, 3 ;
6.2, 5, 6.2]
其中; 表示行尾。
我正在寻找一种快速的方法,因为对于超过 100 行和 1000 列的矩阵,这样的过程必须执行超过 10.000 次。
【问题讨论】:
-
起点:
x = c(2.3, 1.2, 3.6); y = c(1, 1.3, 2, 2.5, 3); y[findInterval(x,y)] -
将 mapMatrix 作为矩阵有什么原因吗?我不了解您当前存储矩阵的方式。 1,1.3,2,2.5,3 出现在矩阵的位置 11,12,21,22,31
-
@road_to_quantdom 对不起,我更正了提供的代码。现在它应该有意义了。
-
@NMeibergen 我的回答没有用吗?