为什么我最喜欢R语言?

245 阅读7分钟

我从数据科学新学生那里得到的最常见的问题可能是:"我应该学习哪种语言......R或Python?"

这是一个有点复杂的问题,因为这取决于你是谁,你的目标是什么。

说到这里,我确实对第一次的数据科学家有一个偏好。

有几个原因,但在高层次上,主要原因是:

让我们逐一讨论这些原因。

R更容易学习和使用

我个人认为,R更容易学习,也更容易使用。

这其中很大一部分原因是它的设计方式。

命名良好的函数

这要从函数的名称说起。 例如,当你使用dplyr时,有几个主要工具。

  • 选择
  • 过滤
  • 变异
  • 总结
  • 分组

这些名称很简单,容易记住。

"select "选择列。"filter "过滤行。"summaryise "总结数据。 这些函数的名字就像英语一样。 这使得它们非常容易记住,而且当你坐下来写代码时也更容易使用。

其他R/Tidyverse包中的大多数函数,如Tidyr、Forcats和Reader,也都是这样命名的(虽然,ggplot2中的名字更玄乎一些)。

每个函数只做一件事

另一个好的设计特点是,在大多数情况下,R的Tidyverse中的每个函数都做一件事,而不是做多件事。

例如,每个dplyr函数只做一件事。

An image of a table that explains the 5 dplyr verbs.

这与Python的Pandas包形成对比,后者的函数有时会做多件事情,你需要用特定的参数来控制它们的行为。

例如,Pandas的 "过滤 "方法可以检索行或列。 具体的行为需要你使用"axis= ,"这又需要你了解Pandas和Numpy中的轴是如何工作的。 只是使用起来要复杂得多。 此外,有多种方法来检索列,它们的工作方式都有些不同。

很容易就能 "把碎片拼起来"

要做真正的数据科学工作,你需要能够多个函数以复杂的方式组合在一起。

R的Tidyverse正是为了做到这一点而设计的。

你可以使用dplyr的 "管道 "语法,将不同的工具组合在一起。 你可以用它们来组合dplyr函数来做数据处理。 但你也可以用管道与Tidyr、Readr、ggplot2和其他Tidyverse工具一起使用。

An image that shows the basic syntax for a dplyr pipe.

当你使用这种管道语法时,一切都像乐高积木一样扣在一起,"把碎片拼起来 "来做真正的工作变得非常容易。

R只是更容易学习和使用,在所有方面都是如此。

最后,Python的数据处理语法更难学,更难用。 但是R的语法非常简单,而且容易使用。

如果你是一个初学者,R可能会更容易学习、阅读和编写。

R教你思考工作流程

第二,R的Tidyverse教你思考工作流程。

正如我在上面提到的,你可以使用 "管道 "运算符将函数连接起来。

你可以使用管道运算符将两个函数组合在一起。

但你也可以使用管道运算符将多个函数组合在一起,形成多功能处理链

An image showing how to combine several dplyr verbs together, using the pipe operator.

这使你能够编写多步骤的代码块来处理你的数据。

你可以将这些代码块结合到更大的脚本中,以进行端到端的数据科学工作,逐步处理、可视化和分析你的数据。

例如,这是我做的一个小型的端到端R数据科学项目,它向你展示了一切是如何在工作流程方面配合起来的。

请注意,代码被组织成一个个的函数块,这些函数块被串联起来完成一些小任务。

还注意到,整个代码有一个从上到下的流程,比如我们首先获得数据,然后清理数据(一步一步来),然后整理,然后可视化。

R的句法结构为这一点提供了便利。 它就是为这个而生的。

因为它的设计考虑到了这种类型的工作流程,它将帮助你学会用工作流程来思考

这一点非常重要。

R更适合于初级数据科学角色

最后,对于 "初级 "数据科学角色,我更喜欢R。

这是什么意思?

数据科学在不同的级别,以及在你职业生涯的不同阶段是不同的。

在后期阶段,数据科学涉及到我们认为的全部数据科学技能:数据整理、可视化、机器学习、深度学习、特殊主题等。

但在早期阶段,数据科学通常是 "硬核数据分析"。

换句话说,大多数入门级的数据科学角色是数据分析角色。 他们非常频繁地排除了更高级的主题,如机器学习和深度学习。

因此,在早期阶段,大多数数据科学家会。

  • 获取数据
  • 清洗数据
  • 处理数据
  • 视觉化数据
  • 分析数据

这往往很像一个数据分析的角色,但有更大、更复杂的数据集,你通常从数据库中得到。

事实证明,这就是R真正的优势所在。 R对于像机器学习和深度学习这样的主题不太擅长(尽管这正在改变)。 但R对于数据分析来说是非常好的。

当我需要获取、清理、重塑、可视化和分析我的数据时,我实际上更喜欢R而不是Python。

(原因正如我前面所讨论的,它为这些任务设计得非常好,而且易于使用。)

最终,如果你把大部分时间花在处理、可视化和分析数据上(而且你不需要做高级的事情),那么我推荐R。

但有时,还有更好的选择

说了这么多,在有些情况下,Python可能更好。

如果你的目标公司需要一种不同的语言,R可能是一个糟糕的选择

如果你想在一家严格使用Python的公司工作,那么是的,你可能需要学习Python来代替。

要明确的是:对于数据科学职位,苹果、Facebook、谷歌和亚马逊都经常让你在R和Python之间选择。 一个公司强迫你使用一种特定的数据科学语言,这是很罕见的。

如果你只对机器学习感兴趣,R可能是一个糟糕的选择

如果你只对机器学习感兴趣,那么Python可能比R更好。

截止到写这篇文章的时候,商业或工业环境中的大多数机器学习都是用Python完成的。 大多数专业的机器学习工程师都使用Python。

但另一方面,机器学习的工作也更难得到。 如果你刚开始就严格专注于机器学习,可能是个坏主意。

如果你想做软件工程,R可能是一个糟糕的选择

最后,如果你想做更传统的软件工程,我建议不要使用R。

正如我之前提到的,R在数据处理、可视化和数据分析方面非常出色。 它在 "数据分析 "方面很出色。

但是我非常不喜欢用它来构建系统和编写软件。 在R中做这些事情的语法总是感觉很复杂,特立独行,而且很笨拙。

当我需要建立系统时,我更喜欢用Python来代替。

如果你想学习数据科学,R是一个很好的选择

决定学习哪种数据科学语言是个人的选择,有时取决于个人情况。

但是,我经常建议人们学习R......特别是如果他们刚刚开始学习数据科学。

原因是R更容易学习和使用,R教你思考工作流程,而且R更适合许多初级数据科学角色。