You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

优化匹配两个数据框行的R代码以提升运行速度

优化R代码:快速匹配两个数据框的行

你的代码用了双重循环,时间复杂度是O(n*m)——17000行的data乘800000行的stuff,要执行超过130亿次循环,这显然不可能在合理时间内完成。用R内置的merge()函数可以彻底解决这个效率问题,这是专门为数据框匹配设计的优化工具。

替代方案代码

# 根据指定列匹配,保留data所有行,匹配stuff对应的行
plays <- merge(
  x = data,
  y = stuff,
  by.x = c(2, 5),  # data中用来匹配的列:第2列和第5列
  by.y = c(2, 4),  # stuff中对应的匹配列:第2列和第4列
  all.x = TRUE     # 保留data的所有行,即使没有匹配到stuff的内容
)

关键说明

  • merge()函数底层用了高效的哈希匹配或排序合并算法,时间复杂度远低于双重循环,能在几秒到几分钟内完成你的需求。
  • 如果你的数据中每个data条目对应唯一的stuff行,结果和你原来的循环逻辑一致;如果有多个匹配行,merge()会把所有匹配结果都保留下来,你可以根据需求用dplyr::distinct()之类的工具去重。
  • 建议给数据框的列命名,这样代码可读性更高,比如把by.x = c("col_name1", "col_name5")替换索引,后续维护更方便。

内容的提问来源于stack exchange,提问作者Kyle Bush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 08:38:18