JuliaCall更新:R软件包的自动Julia安装

2021-01-20 10:26:51

一些偷偷摸摸的凉爽功能使它成为JuliaCall v0.17.2 CRAN版本。在最新版本中,现在具有用于自动安装Julia的install_julia函数。这使Julia成为R包的出色高性能后端。例如,以下是即使未安装Julia仍可以使用的diffeqr软件包示例:

install.packages(" diffeqr") 库(diffeqr) de<-diffeqr :: diffeq_setup() 洛伦兹<-函数(u,p,t){ du1 = p [1] *(u [2] -u [1]) du2 = u [1] *(p [2] -u [3])-u [2] du3 = u [1] * u [2]-p [3] * u [3] c(du1,du2,du3) } u0<-c(1.0,1.0,1.0) tspan<-c(0.0,100.0) p<-c(10.0,28.0,8 / 3) 概率<-de $ ODEProblem(lorenz,u0,tspan,p) fastprob<-diffeqr :: jitoptimize_ode(de,prob) 溶胶<-de $ solve(fastprob,de $ Tsit5(),saveat = 0.01)

在后台,它使用了DifferentialEquations.jl包和SciML堆栈,但是从用户那里抽象出来的东西太多了,Julia实际上是Rcpp的替代品,具有更容易的交互开发。以下示例确实将无缝集成带回家:

install.packages(diffeqr) 库(diffeqr) de<-diffeqr :: diffeq_setup() degpu<-diffeqr :: diffeqgpu_setup() 洛伦兹<-函数(u,p,t){ du1 = p [1] *(u [2] -u [1]) du2 = u [1] *(p [2] -u [3])-u [2] du3 = u [1] * u [2]-p [3] * u [3] c(du1,du2,du3) } u0<-c(1.0,1.0,1.0) tspan<-c(0.0,100.0) p<-c(10.0,28.0,8 / 3) 概率<-de $ ODEProblem(lorenz,u0,tspan,p) fastprob<-diffeqr :: jitoptimize_ode(de,prob) prob_func<-函数(prob,i,rep){ de $ remake(prob,u0 = runif(3)* u0,p = runif(3)* p) } ensembleprob = de $ EnsembleProblem(fastprob,prob_func = prob_func,safetycopy = FALSE) 溶胶<-de $ solve(ensembleprob,de $ Tsit5(),degpu $ EnsembleGPUArray(),轨迹= 10000,saveat = 0.01)

多么复杂的代码!好吧,也许知道diffeqr包的源代码只有150行代码会感到震惊。当然,它由后端的许多Julia魔术驱动,因此下一个软件包也可以。有关更多详细信息,请参见有关使用Julia进行R中的微分方程求解的重要文章。