加速搜索与两个条件匹配的行,例如 R 中的哪个(...&...)

  • 本文关键字:例如 搜索 两个 加速 条件 r
  • 更新时间 :
  • 英文 :


我希望加快 R 中的一小段代码(见下文),该代码搜索表 1 中与表 2 元素匹配的元素的行 #。请注意,哪个条件有一个 &,因为我需要两个元素 x 和 y 相同才能选择行。

我的数据集很大,这个 for 循环很慢。有没有办法加快速度?


    mycoord<-c()
    for(k in 1:length(table2)){
           mycoord<-c(mycoord, 
                      which(table1$x==table2$x[k] & table1$y==table2$y[k]))
          }

谢谢

只需按 xy 合并两个表,并根据需要与合并的输出进行交互。

merged_table <- merge(table1, table2, by=c("x", "y"))

然后,所有合并的列都可用作向量:

merged_table$column1
merged_table$column2
merged_table$column3
...

在 R 中,在大数据大小的情况下,行上的for循环非常慢。

R 提供了矢量化方法和出色的data.table包。

您的搜索是包含两个联接列的"联接"。

由于您没有提供输入数据和预期的输出,因此我使用 mtcars 数据集创建了一个简单的示例来展示如何连接:

library(data.table)
table2 = as.data.table(mtcars)
table1 = data.table(cyl = c(4, 6), gear = c(4, 3))
table2[table1, .SD, on = .(cyl, gear)]

在这种情况下,.SD表示"所有列",on指定要比较的列("联接列")。

table1包含"查找"数据(= table2的过滤条件):

> table1
   cyl gear
1:   4    4
2:   6    3

最新更新