【发布时间】:2015-01-13 19:42:36
【问题描述】:
为了简化问题而编的
我有两个矩阵:
- mat1:nrow=100 000; ncol=5
- mat2 : nrow=500 000 ; ncol=5
预期结果
统计mat1的每一行与mat2的每一行之间相似数字的数量:
提案
Intersection <- function(matrix1, matrix2){
Intersection = matrix(nrow=nrow(matrix1), ncol=ncol(matrix2))
for(i in 1:nrow(matrix3)) {
for(j in 1:ncol(matrix3)) {
Intersection[i,j] = length(intersect(matrix1[i,], matrix2[j,])
}
}
return(Intersection) }
问题:
如何向量化这个函数以避免循环?
数据样本
以下是用于试验解决方案的数据样本:
输入(矩阵1) 结构(c(1L, 20L, 2L, 1L, 7L, 2L, 22L, 12L, 2L, 27L, 3L, 35L, 16L, 3L, 32L, 4L, 37L, 35L, 17L, 33L, 5L, 38L, 46L, 27L, 49L), .Dim = c(5L, 5L))
输入(矩阵2) 结构(c(1, 14, 7, 1, 7, 2, 22, 12, 2, 27, 7, 35, 16, 3, 32, 14, 39, 35, 17, 32, 17, 38, 46, 20, 49), .Dim = c(5L, 5L))
【问题讨论】:
-
我的建议是您将其缩小到可管理的大小以进行测试。
-
我刚刚添加了一些数据进行测试。
-
也许您可以编写一个与 apply 系列函数兼容的函数,但我不确定如何管理使用两组数据。
-
我也不是:s 这就是为什么我要寻求你们的帮助! :)
标签: r loops vectorization