如何有效地将矩阵的每一行与R中列表的每个部分进行比较?

psadosky

这是我的意思的示例,此代码输出正确的内容:

list1 = list(c(1,2,3,4), c(5,6,7), c(8,9), c(10, 11))
matrix1 = rbind(c(1,2), c(1,5), c(8, 10))

compare <- function(list.t, matrix.t) {
    pairs <- 0
    for (i in 1:nrow(matrix.t)) {
         for (j in 1:length(list.t)) {
              if (length(intersect(matrix.t[i,], list.t[[j]])) == 2) {
                         pairs <- pairs + 1
              }
         }
    }
    return(pairs / nrow(matrix.t))
}

compare(list1, matrix1) 
# = 0.33333

我希望这是有道理的。我正在尝试使用nx2矩阵,看看是否在列表的每个部分中也都找到了矩阵每一行的两个元素。因此,在上面的示例中,矩阵的第一行是(1,2),并且该对在列表的第一部分中找到。在列表的任何部分都找不到(1,5)或(8,10)对。这就是为什么我要输出0.3333(1/3)。

我想知道是否有人知道一种不使用两个for循环将每一行与每个部分进行比较的方法?我有更大的矩阵和列表,所以这太慢了。

感谢您的任何帮助!

丰富的雕刻

这项工作不一样吗?您可以调用sapply列表并同时与矩阵的所有行进行比较。

> list1 = list(c(1,2,3,4), c(5,6,7), c(8,9), c(10, 11))
> matrix1 = rbind(c(1,2), c(1,5), c(8, 10))

> s <- sapply(seq_along(list1), function(i){
      length(intersect(list1[[i]], matrix1)) == 2
  })
> sum(s)/nrow(matrix1)
# [1] 0.3333333

如果我们调用您的函数f1(),并且该函数的sapply版本与此相同f2(),则我们得到以下速度差异。

> library(microbenchmark)
> microbenchmark(f1(), f2())
# Unit: microseconds
#  expr     min       lq  median       uq      max neval
#  f1() 245.017 261.2240 268.843 281.7350 1265.706   100
#  f2() 113.727 117.7045 125.478 135.6945  268.310   100

希望这就是您要寻找的效率提高。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我如何(有效地)将向量添加到Julia中矩阵的每一行?

来自分类Dev

如何将矩阵变换有效地应用于NumPy数组的每一行?

来自分类Dev

如何将矩阵变换有效地应用于NumPy数组的每一行?

来自分类Dev

如何有效地使用which()比较r中的一行和一行?

来自分类Dev

如何有效地从熊猫数据框中减去每一行?

来自分类Dev

如何有效地更新许多百万行表中每一行的INT列

来自分类Dev

如何有效地将字典中的字符串列表与Python中的另一个字典列表进行比较?

来自分类Dev

用R中列表中的行有效地填充二维矩阵

来自分类Dev

如何有效地在Pyspark的数据帧的每一列上为每个最小值或最大值获取一行?

来自分类Dev

如何用R分组有效地将第一行的NA替换为0

来自分类Dev

有效地比较两个大型列表的每个列表中的第一项?

来自分类Dev

如何有效地将一个表中的多个Excel表导入R列表?

来自分类Dev

如何有效地对 numpy 矩阵进行排序

来自分类Dev

在Delphi中有效地将整数与静态整数列表进行比较?

来自分类Dev

有效地将字典值与列表项进行比较

来自分类Dev

如果python中的每个列表中都存在一个元素,如何有效地串联列表

来自分类Dev

R中是否有一种有效的方法可以将矩阵M2的每一行“粘贴”到矩阵M1的每一行以获得所有可能的组合?

来自分类Dev

如何有效地将内存块与单个字节进行比较?

来自分类Dev

如何有效地将 Accesss SQL 结果与 SQL Server 结果进行比较?

来自分类Dev

R:有效地在每一列选择不同的行

来自分类Dev

R:有效地在每一列选择不同的行

来自分类Dev

内存有效地将一行插入到data.table对象中?

来自分类Dev

如何有效地更改矩阵/嵌套列表中的条目?

来自分类Dev

熊猫:有效地将一行分成多行

来自分类Dev

在PostgreSQL中,为另一个表中的每一行有效地使用一个表

来自分类Dev

如何有效地比较Python中的两个列表?

来自分类Dev

如何有效地从控制台读取一行用户输入?

来自分类Dev

如何有效地从控制台读取一行用户输入?

来自分类Dev

如何有效地将三角矩阵存储在内存中?

Related 相关文章

  1. 1

    我如何(有效地)将向量添加到Julia中矩阵的每一行?

  2. 2

    如何将矩阵变换有效地应用于NumPy数组的每一行?

  3. 3

    如何将矩阵变换有效地应用于NumPy数组的每一行?

  4. 4

    如何有效地使用which()比较r中的一行和一行?

  5. 5

    如何有效地从熊猫数据框中减去每一行?

  6. 6

    如何有效地更新许多百万行表中每一行的INT列

  7. 7

    如何有效地将字典中的字符串列表与Python中的另一个字典列表进行比较?

  8. 8

    用R中列表中的行有效地填充二维矩阵

  9. 9

    如何有效地在Pyspark的数据帧的每一列上为每个最小值或最大值获取一行?

  10. 10

    如何用R分组有效地将第一行的NA替换为0

  11. 11

    有效地比较两个大型列表的每个列表中的第一项?

  12. 12

    如何有效地将一个表中的多个Excel表导入R列表?

  13. 13

    如何有效地对 numpy 矩阵进行排序

  14. 14

    在Delphi中有效地将整数与静态整数列表进行比较?

  15. 15

    有效地将字典值与列表项进行比较

  16. 16

    如果python中的每个列表中都存在一个元素,如何有效地串联列表

  17. 17

    R中是否有一种有效的方法可以将矩阵M2的每一行“粘贴”到矩阵M1的每一行以获得所有可能的组合?

  18. 18

    如何有效地将内存块与单个字节进行比较?

  19. 19

    如何有效地将 Accesss SQL 结果与 SQL Server 结果进行比较?

  20. 20

    R:有效地在每一列选择不同的行

  21. 21

    R:有效地在每一列选择不同的行

  22. 22

    内存有效地将一行插入到data.table对象中?

  23. 23

    如何有效地更改矩阵/嵌套列表中的条目?

  24. 24

    熊猫:有效地将一行分成多行

  25. 25

    在PostgreSQL中,为另一个表中的每一行有效地使用一个表

  26. 26

    如何有效地比较Python中的两个列表?

  27. 27

    如何有效地从控制台读取一行用户输入?

  28. 28

    如何有效地从控制台读取一行用户输入?

  29. 29

    如何有效地将三角矩阵存储在内存中?

热门标签

归档