我让这个双循环工作:
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
的方法,但是我想不出来。
您可以简单地使用基础R
一行代码执行此操作:
merge(rsm, doe, by.x=names(rsm)[2:4],by.y=names(doe)[2:4])[-(1:3)]