Recommended tools, project structure, function design, and coding style for writing maintainable R code