微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数百或更多函数的行式集成

如何解决数百或更多函数的行式集成

假设我们有一个包含数百个线性模型参数的 DF,包括斜率 m 和 y 截距 b,以及积分上限 up_lim .

  tmp_df <- tibble(m = rnorm(1:1000,mean = 1,sd = 1),b = rnorm(1:1000,mean = 3,sd = 0.5),up_lim = rnorm(1:1000,mean = 11,sd = 4))

我的目标是使用简单的线性模型在 x 上按行整合,从 0up_lim

integrand <- function(x) { m * x + b }

结果应存储在 tmp_df 的新列中。我在网上做了一些搜索,我知道 integrate 函数的非向量性质,但无法将我找到的任何讨论/解决方案翻译成我的案例。我最好的解决方案是循环,它可以处理几百个集成,但是当我向它提供我的完整数据集(> 100 万行)时,我的 12 核 MacBook 崩溃了(即使在我尝试了多核支持之后):

  lapply(c("foreach","doParallel"),library,character.only = TRUE)

  n <- nrow(tmp_df)

  registerDoParallel(numCores)
  
  tmp_df$Fs_linear <- 
  foreach (i = 1:n,.combine = rbind) %dopar% {

  integrate(
        function(x) { tmp_df$m[i] * x + tmp_df$b[i] },lower = 0,upper = tmp_df$up_lim[i])$value
  }
  
  stopImplicitCluster()

有没有一种优雅/资源高效的方法来实现这一点?我会非常感谢任何指点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。