Alright, hello everyone. My name is Bruno. I'm a statistician and data scientist, data
janitor, whatever you call it, in Luxembourg. Are there some people that use the R programming
language here? Statistics? I will see some of you. Okay, cool. Maybe this will interest
you then. So what is R very quickly? So R is this programming language that's been
around for 30 years. It's like a floss implementation of S and it's mainly used and mostly used
for statistics, machine learning, data science and all that kind of thing. And it comes with
all these built-in objects that we like very much when we work with these things, which
is data frames, matrices, formulas, models, etc. So that's all built into the language.
There is like a little hello world. You can, with the base language, do linear regressions
so you can load data frames or CSV files very easily. You have formulas that define like
your model very easily and you can do that with the base language. But you can also extend
the language with packages and these are really called packages. So you have deeplier, you
have tidier, these are very popular packages for data manipulation but there's many others.
And this here is like a typical data manipulation pipeline in R. So you start with your data
frame and you keep passing functions to that with arguments and you do your aggregations,
you do whatever you want. And so we have, as of writing, around 23,000 packages that
are available through the two biggest main package sets if you want, CRAN and Bioconductor.
I wrote that all are available through NICS packages. I don't think that's fairly accurate.
I think not all packages are available but most of them are available. Personally, I've
never found a package that wasn't available through NICS packages. So what this means
then is that we could use NICS to set up an environment with R, with our packages that
we need, etc. and use that to work. But that's not really a thing in the R ecosystem like
this per project environment. If you use Python like for data science, very typically you
will see people start with a virtual environment with a specific version of Python, specific
versions of packages. That's not really a thing. At most what people do or our users
do, they do like per project libraries of packages, right? That's a thing. And if you
need more, people would typically use Docker and there's been the Rocket project for that
that really popularized the use of Docker in the R ecosystem. That being said, I wrote
with a colleague called Philipp Bauman. We wrote the Rix package. So Rix is itself an
R package which provides this really familiar interface to R users. It's a standard function.
You can specify the R version that you want. You can specify the packages that you want.
These packages can come from CRAN, can come from Bioconductor. They can come from GitHub
as well. If they are hosted on GitHub only, you can set up tech packages without typically
a thing that R programs want as well. And system packages, we called it like this. Maybe
it's not the best thing, but this would be kind of other tools if you need Git, if you
need whatever, you can add it there as well. And you can specify IDEs because for R Studio,
which is a popular ID for R programming, there's like a wrapper that needs to be installed
as well. So this would take care of that. And it generates that expression that I'm not
going to show you, but it's like a Nix expression that will install all of these things. It will
look automatically for the right revision. And if you put in Git packages as well, it
will also generate for you the hash because there's like a little server that we set up
that downloads the package there, computes the hash and then sends it back to the user.
You can also use this with Nix function within R. So you could execute any function or any
R script inside like a sub shell with a specific version of R. And you could then within your
interactive session that you are currently running, you can then get that result back
and continue working with it. So this is useful if you are like doing a reproducibility study
and you just want to execute one particular function from a paper, for example, and you
just want to get that result. So you can do that as well quite transparently. If you're
interested, there's this website that you can check out. It's still not released on
CRAN or on CRAN, but we are aiming at doing that in a couple of weeks. Thank you for your
attention.
Thank you.