0 基础的我如何快速理解和部署一个 R 语言项目

本文记录一下自己是如何在0基础的情况下,接手到一个只有代码,缺乏文档的 R 语言项目,并且将其调试并部署成功的。

前言

首先,我对 R 语言是不了解的,从来没学习过。我拿到这个项目的时候也不清楚这个实际上是做什么的,但是好在我知道这个项目的输出呈现是什么东西,至少可以有一个反馈。

我是如何做的

第一步,既然不了解 R 语言,那就先看一个快速入门,目的在于了解简单的 R 语言的语法,让自己大致看得懂代码。这里推荐看R 数据分析指南与速查手册

第二步,我们应该要了解如何安装和配置一个 R 语言的环境。这里,我使用的最简单的方法就是利用 conda 来管理 R 语言的环境,这个可以参考我的另外一篇文章。简单来说,你可以直接去 https://anaconda.org/ 上搜索相应的 R 包的名字,找到之后按照提示安装即可。大部分的 R 包都是从 conda-forge 和 bioconda 安装的,其他的 channel 可能存在打包质量不高的情况,不建议安装。conda 没有提供的 R 包,那么依然就用传统的编译安装了,这里不再赘述,教程很容易可以搜索到的。

注意,这里的安装配置环境应该是穿插在整个过程中的,毕竟一开始我们也不知道要安装什么包啊。

第三步,快速阅读代码,并尝试运行。具体的步骤:

  1. 阅读其中的 R 源码,即每一个 .R 文件。
  2. 关注这些 R 源码之间的关系,看看是哪一个 R 文件 source 了哪个文件,了解整个脉络。
  3. 理清关系之后,可以发现项目包含数据的预处理和主程序部分。
  4. 进一步看一下每一个 R 文件中的数据输入和输出,即这些源码需要读取哪些数据文件,输出哪些数据文件。
  5. 尝试运行,通过提示安装需要的 R 包。其实这里也可以通过看代码里的 library() 方法的调用看到需要安装哪一个包。
  6. 经过反复尝试,我发现这边缺少了一些输入数据,因而尝试屏蔽了数据的输入部分,最后总算将代码运行起来,并看到了网页的输出。

第四步,我们就不得不更加详细的了解其中代码细节,特别是数据的输入部分。经过分析和理解,我们从相应的网站获取到了数据并作为输入。但是实际运行的时候,我发现数据预处理部分太慢了。经过仔细分析,发现其在算法涉及上存在大量重复的IO读写操作,经过简单的优化,速度就可以得到明显的提升。

第五步,我个人比较熟悉 Python。因而我搜索了 Python 是否有相关的库来实现其中的一部分功能。我发现预处理部分可以用 Python 来改写,逻辑上更加清晰,代码也更好理解。

小结

以上就是一点简单的总结,从一开始完全不清楚接手的是啥,到最后不仅能将代码跑起来,还要简单的改造一部分,提升速度。