我在 R 中运行一个函数,该函数可能需要很长时间才能运行,因为它执行多个命令来转换和子集一些数据,然后再将其推入ggplot
绘图。我需要多次运行此函数来调整参数值。我将提供的示例很简单……但想知道如何加快速度?如果按比例放大,即获得每个组合的最快方法是什么...是否有一种通用方法可以将for
循环转换为mclapply
假设它们更快...请随时提供替代模拟示例来证明对特定方法的偏好
模拟示例:
基本功能:
ff <- function(n, mu, stdev){
x1 <- c(1:n)
y1 <- rnorm(n,mu,stdev)
z1 <- data.frame(cbind(x1,y1))
ggplot(z1, aes(x=x1,y=y1))+
geom_point()+
labs(title=paste("n=",n,"mu=",mu, "stdev=",stdev))
}
所以通过参数的方法是执行以下操作......
for(i in 1:10){
for(j in 1:2){
for(k in seq(100,500,by=100)){
ff(k,i,j)
}
}
}
加快速度的最快方法是什么?我假设它可能需要类似expand.grid(x=c(1:10),y=c(1:2),z=seq(100,500,by=100))
的东西和使用mclapply
来遍历每一行......以某种并行方式?(我有 4 个内核可用于此)。请根据可以最大程度提高速度的方法,随意从基本功能中提取一些内容或将内容放入基本功能中。如果您增加每个参数的范围,该过程显然会花费更长的时间,但是对此没有什么可以做的......或者如果拆分更多核心或其他东西,也可以以某种方式改变......?
并且对于奖励积分...是否有任何东西可以保存输出图像并创建像包manipulate
中一样的滑块以交互方式遍历所有参数...它所做的只是拉出相关图像,而不是而不是每次都重新计算。
注意请随意使用/建议foreach
您认为可能对您的解决方案有用的任何其他软件包(如 )