gpt4 book ai didi

r - 使用 R 中的应用系列并行化用户定义的函数

转载 作者:行者123 更新时间:2023-12-05 02:18:22 24 4
gpt4 key购买 nike

我有一个计算时间过长的脚本,我正在尝试并行化它的执行。

该脚本基本上遍历数据框的每一行并执行一些计算,如下所示:

my.df = data.frame(id=1:9,value=11:19)

sumPrevious <- function(df,df.id){
sum(df[df$id<=df.id,"value"])
}

for(i in 1:nrow(my.df)){
print(sumPrevious(my.df,my.df[i,"id"]))
}

我开始学习在 R 中并行化代码,这就是为什么我首先想了解如何使用类似应用的函数(例如 sapply、lapply、mapply)来执行此操作。

我试过很多东西,但到目前为止没有任何效果:

mapply(sumPrevious,my.df,my.df$id) # Error in df$id : $ operator is invalid for atomic vectors

最佳答案

使用 R 中的 parallel 包,您可以使用 mclapply() 函数。您需要稍微调整代码以使其并行运行。

library(parallel)
my.df = data.frame(id=1:9,value=11:19)

sumPrevious <- function(i,df){df.id = df$id[i]
sum(df[df$id<=df.id,"value"])
}

mclapply(X = 1:nrow(my.df),FUN = sumPrevious,my.df,mc.preschedule = T,mc.cores = no.of.cores)

此代码将在您机器的 no.of.cores 上并行运行 sumPrevious。

关于r - 使用 R 中的应用系列并行化用户定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45474481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com