我比较了内置R函数的性能rnorm,qnorm以及pnorm等效的Matlab函数.
似乎rnorm和pnorm函数在R中比在Matlab中慢3-6倍,而qnorm函数是ca. 40%的R.更快我试图RCPP包通过使用这导致减少在运行期间由〜30%,其仍然比显著Matlab的较慢相应的C库来加快R的功能rnorm和pnorm.
是否有可用的包提供了一种更快的方法来模拟R中的正态分布随机变量(除了使用标准rnorm函数)?
我试图使用doParallel后端在并行foreach循环中使用标准的R闪亮进度条.但是,这会导致以下错误消息:
警告:{:任务1失败 - "'会话'不是ShinySession对象时出错."
library(shiny)
library(doParallel)
ui <- fluidPage(
actionButton(inputId = "go", label = "Launch calculation")
)
server <- function(input, output, session) {
workers=makeCluster(2)
registerDoParallel(workers)
observeEvent(input$go, {
Runs=c(1:4)
Test_out=foreach(i=Runs, .combine=cbind, .inorder=TRUE, .packages=c("shiny"),.export=c("session")) %dopar% {
pbShiny = shiny::Progress$new()
pbShiny <- Progress$new(session,min = 0, max = 10)
on.exit(pbShiny$close())
test_vec=rep(0,100)
for(i in 1:10){
test_vec=test_vec+rnorm(100)
pbShiny$set(message="Simulating",detail=paste(i),
value=i)
Sys.sleep(0.2)
}
}
})
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
如果我按顺序运行foreach循环(使用registerDoSEQ()),代码就会运行.有谁知道如何解决这个问题?
在以下链接下有一个类似的问题,但由于没有提供工作示例,因此没有得到解决:
r ×2
doparallel ×1
foreach ×1
matlab ×1
performance ×1
progress-bar ×1
rcpp ×1
runtime ×1
shiny ×1