想象一下,你有相当大的数据集2.000.000点随机发布在一些多边形空间。 密度函数必须从随机选择的4.000点样本中随时测量。这个过程必须重复200次。我的代码并没有很好地解决这个问题。任何建议如何改进代码。空间分布/模拟/密度函数
# coord is SpatialPoints Object
library(sp)
library(maptools)
library(map)
你可以从下面的链接的对象polygonial:使用酷睿i3,2.27Ghz,4个处理器https://www.dropbox.com/sh/65c3rke0gi4d8pb/LAKJWhwm-l
germG <- readShapePoly("vg250_gem.shp")
coord <- spsample(germG, 2e06, "random") # this command needs some minutes to be done.
# R is the number of simulations
R <- 200
M <- matrix(NA,R, 256)
ptm=proc.time()
for(r in 1:R) {
ix <- sample(1:2e06,size=4000)
Dg <- spDists(coord[ix])
Dg <- as.vector(Dg[Dg!=0])
kg <- density(Dg,bw="nrd0",n=256)
M[r,] <- kg$y
}
runningtime = proc.time()-ptm
cat("total run time (sec) =",round(runningtime[3],1),"\n")
上部代码提供了一个总的运行时间(秒)= 964.8和4 Gb RAM。如何加快这个for-loop仿真的性能? 我会非常感谢你的评论,评论和建议。
为您的代码添加更多评论总能帮助其他人更好地遵循它。另外,最特别的是什么?你的目标是什么(例如特定的时间)? – camdixon
@camdixon我已经通过编辑初始文本添加了更多信息。谢谢你的建议。 –
因此,坐标是200万点,但是只有在创建了R(200)个采样点并创建了M矩阵后才开始测量时间。我会在开始时测量时间,看看创建坐标需要多长时间,然后再次测量以查看采样需要多长时间。此外,基于你的代码,我不知道你在哪里设置$ y,你能否给我澄清这个评论? – camdixon