我在相似性度量包中有一个名为DTW的函数。它需要两个矩阵或数据框作为其参数,并返回动态时间扭曲距离。那些数据帧是轨迹的经度和纬度。 我的程序看起来像这样,所有数据框如df1,df2,df3等都可用:
distance <- function(arg1,arg2) {
DTW(arg1, arg2)
}
for(i in 1:length(LIST)){
for(j in 1:length(LIST)){
a <- get(paste0("df",i))
b <- get(paste0("df",j))
ddist[i,j] <- distance(a,b)
print(ddist)
}
}
我正在创建一个矩阵ddist,其中所有值都是由distance函数返回的。该计划工作正常。我想快速使用并行编程,如parapply或parlapply函数。
答案 0 :(得分:0)
这是一个简单的方法,让您了解如何使其并行
k<-length(LIST)
ddist<-matrix(0,k,k)
library("doParallel")
cl<-makeCluster(4,outfile='')
registerDoParallel(cl)
for(i in 1:k) {
a <- get(paste0("df",i))
ddist[i,]=foreach(j = 1:k , .combine='cbind' ,.export=paste0("df",1:k)) %dopar% {
b <- get(paste0("df",j))
distance(a,b)
}
}
stopCluster(cl)
说完了,要评估的事情
.export=c(ddist,paste0("df",1:k))
detectCores()-1