• R experts, for all your R needs

    R experts, for all your R needs

Shiny applications (design and deployment)

Application and dashboard using Shiny framework

R server and infrastructure

Rstudio server, Rconnect, Shinyproxy, Shiny server…

Code and R scripts optimization

Performance, Maintainability & Reusability

R Software Engineering

Package creation, algorithm production, ...

Remote trainings and certification

Learn R with us from the confort of your home/office!

Open-source contributions

Our open-source contributions to the R community

"R experts at your disposal"

A team of R consultants

At ThinkR we are passionate about R. We are a team of developers and R consultants, with solid knowledge and skills in everything R-related — development, application deployment, or infrastructure .

Contact us if you need a team of experts to carry out your R projects:

  • Package creation
  • Implementation of good development practices
  • Code optimization
  • Shiny application
  • Installation and configuration of Rstudio Connect
  • Rstudio server or ShinyProxy with Docker
  • Advanced R training
gtlabr hex logo inside a rectangle

2024-05-17 / Sébastien Rochette

gitlabr V2.1.0 – gitlab-ci with ‘pak’ and functions to deal with groups on GitLab

A lot of cleanups, new features, and bug fixes for this new version of ‘gitlabr’. You will find brand-new CI/CD templates and functions to manage GitLab groups from R. Brand new gitlab-ci with ‘pak’, ready to use The template for checking R packages uses {pak} for dependency management. You will no longer have issues with missing system dependencies. You should ...

2024-04-29 / Yohann Mansiaux

Pimping your shiny app with a JavaScript library : an example using sweetalert2

You think that some of the components of {shiny} are not very functional or downright austere? Are you looking to implement some feature in your app but it is not available in the {shiny} toolbox? Take a look at JavaScript! JavaScript is a very popular programming language that is often used to add features to web pages. With HTML and ...

2024-02-21 / Vincent Guyader

Performance Optimization in R: An Example Using Memoise

Context Whether during the (training sessions) I can provide or the (coaching) sessions I can conduct, there is often a moment when I go on a long rant about the power and usefulness of caching. How awesome it is, not so complicated to set up, and super interesting. The last time I gave a presentation was to talk about ({targets}), ...

2024-02-16 / Swann Floc’hlay

Tame your namespace with a dash of suggests

We’ve all felt it, that little wave of shiver through our skin as we watch the check of our newest commit running, thinking “Where could this possibly go wrong?”. And suddenly, the three little redeeming ticks 0 errors ✔ | 0 warnings ✔ | 0 notes ✔ Allelhuia! 🎉 We git commit the whole thing, we git push proudly our ...

banner with sticker logo of fusen package

2023-12-12 / Sébastien Rochette

‘fusen’ v0.6.0 (beta): a new Rmd/Qmd parser with ‘lightparser’ to try before release

{fusen} now relies on {lightparser} to detect the different parts of a Rmd or a Qmd file before inflating your flat file as a R package. Before the release on CRAN, I need you to test the development version and tell me if there are any edge cases with your flat files. TL;DR Please try the pre-release version of {fusen} ...

2023-12-04 / Florence Mounier

{checkhelper} is on CRAN: so you don’t have to be afraid to run a check

You’ve put together a great package that you’re proud of and you’d like to share it with the R community? Maybe even submit it to CRAN? Before you do that, you know that a few checks are recommended… yes you do! but devtools::check() returns 7 warnings, 12 notes and 200 unclear lines so…. So you’ve come to the right place! ...

fusen - Gotta inflate' em all

2023-07-21 / Yohann Mansiaux

fusen v0.5: Gotta inflate ’em all !

No more amnesia for {fusen}! With v0.5, it now has “memory”, allowing you to inflate all your flat files simultaneously. The aim of this latest version of {fusen} is to provide an ever smoother package development experience, for both novice and experiences users. {fusen} continues to make life easier for package creators. One of the main changes in this new ...

2023-06-05 / Vincent Guyader

Mastering file download in shiny

But why does downloadHandler now return an empty file!? DownloadHandler context When we start working with {shiny}, we often reach a point where it is necessary to offer the user the option to download a document generated by the application. This document can be a PDF report, a PNG or JPEG image, or anything else. The appropriate function for this ...

2023-06-01 / Sébastien Rochette

{attachment} v0.4.0: Breaking changes and configuration file for a better experience

{attachment} v0.4.0 stores your parameters in a configuration file for an easier use during your package development: run att_amend_desc() from anywhere, it will re-use your last set of parameters.  This comes with some breaking changes for a better experience.   The goal of attachment is to help to deal with package dependencies during package development. It also gives useful tools ...

2023-03-15 / Colin Fay

{golem} 0.4.0 is now available

The new version of {golem} is available! Read the complete version of this article at https://golemverse.org/post/golem-0.4.0-release-on-cran/ What’s up with this new version? Lighter dependency tree When we release the first version of {golem} on CRAN, we made the decision that all {golem}-based app should depend on {golem}. This was a conscious decision ,and we made it because {golem} comes with a bunch of internal functions that are used ...

2022-10-04 / Sébastien Rochette

Package dev with {fusen} & {attachment}: load all functions of a flat, manage qmd and auto-fill Remotes field

One aim of our open-source packages at ThinkR is to make our development workflows easier. {attachment} and {fusen} are developed maintained to help packages development and maintenance. Inception… If they help us every day, they can probably help you as well! In this blog post, I present the lastest changes of these two packages. If you want to know how ...

2022-08-19 / Sébastien Rochette

Installation of R 4.2 on Ubuntu 22.04.1 LTS and tips for spatial packages

It is again this time in your Ubuntu user’s life where you plan to upgrade your server installation from Ubuntu 20.04 to Ubuntu 22.04 LTS. Indeed, the first point release 22.04.1 is now there, and you’d like somebody else to try it for you before loosing all your work. Let me do it for you ! We will also use ...

banner with sticker logo of fusen package

2022-05-03 / Sébastien Rochette

{fusen} v0.4 – 14 developers tips and tricks

If you think {fusen} is not for you because you’ve been building R packages your entire life without it, it’s time to give it a try! Refer to the new tips and tricks in the dedicated vignette in case you feel you need additional functionalities: chances are I already implemented them… Go back to the previous blog post to know ...

2022-03-11 / Colin Fay

{golem} 0.3.2 is now available

The new version of {golem} is now available! You can download it from your favorite CRAN repository, or by running the following command: remotes::install_github( “thinkr-open/[email protected]” ) What’s up with this new version? In this release, we have been focusing on a closer integration of tests inside the application building process, notably via Server function testing with Shiny, adding tests to ...

2021-12-19 / Sébastien Rochette

‘fusen’ v0.3: Better project templates, grouped functions and numerous other enhancements

{fusen} gets some maturity! v0.3 is a big rebranding for a more fluid experience, from beginners to advanced developers. Creating a fully documented and tested package has never been so easy and enjoyable. Experience “Rmd first” to the fullest. At first, I imagined {fusen} to help beginners start building R packages. Following the ‘Rmd first’ method, I am convinced that ...

2021-11-14 / Sébastien Rochette

{attachment} v0.2.4: fill the Remotes field

A new version of {attachment} is available on CRAN. Get dependencies installed from GitHub, GitLab, … and add the link to the ‘Remotes’ field in the DESCRIPTION file of your package. install.packages(“attachment”) While waiting for CRAN release, you can install from GitHub: remotes::install_github(“ThinkR-open/[email protected]”) {attachment} helps you deal with dependencies during your package development. All packages used in your code needs ...