convexjlr is an R package for Disciplined Convex Programming (DCP) by providing a high level wrapper for Julia package Convex.jl. The aim is to provide optimization results rapidly and reliably in R once you formulate your problem as a convex problem. convexjlr can solve linear programs, second order cone programs, semidefinite programs, exponential cone programs, mixed-integer linear programs, and some other DCP-compliant convex programs through Convex.jl.

Installation

convexjlr is on CRAN now! To use package convexjlr, you first have to install Julia https://julialang.org/ on your computer, and then you can install convexjlr just like any other R packages.

Note: convexjlr used to support multiple ways to connect to julia, one way was through package XRJulia and the other way was to use package JuliaCall. The latter approach was more performant and thus the default approach. But due to the fact that XRJulia doesn’t support julia v0.7 and v1.0 yet, only JuliaCall backend is supported currently.

We hope you use convexjlr to solve your own problems. If you would like to share your experience on using convexjlr or have any questions about convexjlr, don’t hesitate to contact me: cxl508@psu.edu.

Quick Example

We will show a short example for convexjlr in solving linear regression problem. To use package convexjlr, we first need to attach it and do the initial setup:

And this is our linear regression function using convexjlr:

In the function, x is the predictor matrix, y is the response we have. And the linear_regression function will return the coefficient and intercept solved by cvx_optim.

Now we can see a little example using the linear_regression function we have just built.

More Examples

More examples (including using convexjlr for Lasso, logistic regression and Support Vector Machine) can be found in the pakage vignette or on the github page: https://github.com/Non-Contradiction/convexjlr