优化R中的双循环

时间:2015-09-29 09:14:10

标签: r loops optimization vectorization

我有这个双循环工作:

for (i in 1:nrow(doe)) {
  for (j in 1:nrow(rsm)) {
    if (rsm[j,2] == doe[i,2] & rsm[j,3] == doe[i,3] & rsm[j,4] == doe[i,4]) {
      out <- cbind(doe[i,6], rsm[j,6])
      matching_out <- rbind(matching_out, out)
      break
    }
  }
}

如您所见,我必须在两个数据集中匹配三列(在本例中为#2,3,4),然后在另一个数据帧中将cbind第6列匹配。

问题是:由于这很慢,我该如何优化呢? 我想我可以使用类似apply的方法,但我无法理解。

1 个答案:

答案 0 :(得分:1)

您可以使用基本R单行代码执行此操作:

merge(rsm, doe, by.x=names(rsm)[2:4],by.y=names(doe)[2:4])[-(1:3)]