我在R中遇到了一个问题,我想要做的是如果某个条件符合列中的行,AI想要匹配C列中该行的值,并找到该值出现在列中的最后一个实例B,然后为D列的那一行添加一个数字。我找到了一个解决方案,但是当计算数据框上有几百万行时它很慢,即使我使用的是原始代码的并行版本完成需要约30分钟。我可以做些什么来加速这个代码,或者是否有更快的替代函数来完成同样的事情?这是我目前的并行代码:
x = which(df$a == 4)
y = df$c[which(df$a == 4)]
clusterExport(cl, "df")
clusterExport(cl, "x")
clusterExport(cl, "y")
z = parSapply(cl,seq_along(y), function(i) max(grep(y[i], df$b[1:x[i]])))
df$d[z[!is.infinite(z)]] = df$d[z[!is.infinite(z)]] + 3