 So, sometimes when working in R we can encounter data that is structured as nested lists and in this presentation I will highlight some examples using the RRapply package to handle and manipulate such nested data structures in R. So as an example data set I will load a nested list that is included in the RRapply package which contains renewable energy shares as a percentage of the total energy consumption per country in 2016. So we can see that the countries are organized according to their geographical location and we also observe that certain regions or countries contain missing values. So as a first example we can try to replace these missing values by a value of zero and this can be done using the RRapply function which is a member of the apply family of functions in R and it allows us to recursively apply a function F to list elements while maintaining the structure of the nested list by specifying this how argument. So that's quite convenient. As another example let's say that we want to filter all countries that are located in Europe with the renewable energy share above 50% while still maintaining the structure of the list. So now we can no longer use the RRapply function and instead we have to write our own list recursion code. So this is an example of a recursive function and if we apply this recursive function to the input list then we can obtain the desired results. But as we can see from the code this can quickly become quite complex and if we have to figure out exactly what is going on in this code that can be quite a time consuming task. So the RRapply package provides a re-implemented version of the original RRapply function to make it more flexible and also more generally applicable to list recursion tasks in practice. So it builds on the native implementation of the original RRapply function and for this reason it also doesn't require any additional package dependencies. Going back to the previous example if we now use the new RRapply function then we see that the code becomes much more straightforward. So here we specify a condition function which lets us decide whether a given list element is evaluated or not and we structure the result by filtering only the list elements that have been evaluated so that are satisfying the condition function that we specified here. Here we also use this special argument which is one of a set of special arguments that can be used to access the properties of a given list element under evaluation. So for example the name or the position of an element inside the nested list and in particular this experience argument evaluates to a vector containing the ancestor names of a given list element in the nested list so that allows us to easily check whether a country is located in Europe or not. So the RRapply function can be quite efficient so to illustrate this with an example we unnest the nested list to a melted data frame using this how option and this is essentially the same as what can also be done with the melt function that is available through the reshape tool package. So if we compare the computation times of both functions applied to a large list object then we can see that with the new RRapply function we can actually achieve significant speed ups with respect to the existing melt function that is available in the reshape tool package. So for a more comprehensive overview of the RRapply function you can visit the package web page so some additional features include recursing through other types of tree structured objects such as expressions or call objects. We can also summarize or collapse sub lists of a nested list and there are a number of additional options to structure the returned results that are not shown here. So to conclude the package is available on CRAN as well.