Empirical Study on Dependencies and Updates of R Packages
As an excellent tool for statistical analysis and statistical cartography,R is very popular in the field of statistical analy-sis and artificial intelligence,and it has a rich open-source ecosystem with a growing number of R packages.The characteristics of the R package development model,i.e.,the new development of an R package is often implemented by introducing existing R packages to achieve functionality,resulting in very complex dependencies between R packages and even dependency conflicts.The other factor that causes this problem is the update of the R package,in addition to the dependencies.Therefore,an in-depth empi-rical study of the dependencies and updates of R packages is needed to understand the current state of development of existing R packages.However,existing empirical studies on R have focused on the entire R ecosystem without a specific analysis of the de-pendencies and updates of R packages.To bridge this gap,this paper presents a detailed analysis of the dependencies,the updates,the potential conflicts of dependencies,and the updates of dependencies of common R packages based on data from CRAN(Com-prehensive R Archive Network)and GitHub.It is found that the dependency relationships between R packages are complex,and the number of packages each R package depends on is generally high.Still,the dependencies are concentrated in a part of R packa-ges.Although the update frequency of common R packages is fast,there are still many conflicts(inconsistencies)between depen-dencies,and we detected and classified the dependency conflicts of these R packages.The results of our empirical study can pro-vide R developers and users with a better understanding of the current state of R package development,and provide some sugges-tions that can help R package developers avoid pitfalls in the development process,as well as directions that researchers can ex-plore further on issues related to R package dependencies and updates.
R packageEmpirical studyDependencyUpdateDependency conflict