R语言
什么是R语言?以及为什么要用它?
R
是一种在开放源码环境下开发的语言。它是一种解释性语言,不需要用编译器编译,可以通过其交互式命令行界面(类似于Python界面)和脚本进行快速编程。
由于其直接性,它被广泛用于数据挖掘和数据分析。作为最常用的数值计算编程语言之一,它值得我们对它进行进一步的了解。
RStudio
我们几乎不可能只用命令行编程,如果我们使用的语言主要目的是为了获得数据的可视化分析,那就更不可能了。因此,使用R
最常见的方式是通过Rstudio
,一个开发R代码的图形用户界面软件。
当下载并进入后,它将显示4个面板(如果没有打开脚本面板,则为3个。从左上到右下,它们是
- 脚本面板(Script):你可以在这里写一些要执行的代码块。这里一个非常有用的功能是,它允许你选择你想运行的代码行(如果不是全部的话),通过选择它们并按下运行。
- 控制台面板(Console):交互式终端的位置。你可以在这里输入要执行的代码或使用脚本。输出,如打印输出将显示在这里。
- 环境面板(Environment):在这里你可以看到当前存储的所有变量。
- 这个面板的另一个有用的标签是历史(History),在这里你可以检查所有以前执行的命令。
- 文件面板(Files):在这里你可以看到以资源管理器形式存在的文件。
- 图像(Plots) 标签页让你看到R的图像输出。
- 包(Package) 探索任何已安装的R包。
- 帮助(Help) 当help(“some_command”)被调用时输出相关信息
R软件包
R作为一个大社区,伴随着海量软件包的支持。用以下方法安装一个包
1 | install.packages("package_name") |
将软件包并入你的库中,这样你就可以使用它了。
1 | library("package_name") |
这些操作也可以在RStudio GUI中完成。
R脚本
很多时候,我们需要在多个情况下使用同一段代码,那么我们可以把它们存储在一个文件中。这些文件被称为R
脚本。
1 | # 这是一个计算两个数字的均方根的脚本 |
加载数据
R
的默认读取函数是read.table
,它有局限性,只能读取人类可读式的数据文件(例如,tab分隔的,逗号分隔的)。其结果是一个data.frame
对象。
1 | data <- read.table(filename, header=TRUE, sep="\t") |
数据结构
向量Vector
向量是一组以数组形式排列的数值,其中所有的元素都应该是同一类型。
以下是几种可以构造一个向量方法:
1 | v <- c(1, 2, 3, 4, 5) |
从向量取出一个元素的方法:
1 | v[1] # 第一个元素 |
串列List
串列是一个允许多种类型的值的向量。
串列遵循与向量相同的创建和提取规则,只是每个元素也被认为是一个串列。因此:
1 | l <- list(1, "a", TRUE, c(-1, -2, -3)) |
矩阵Matrix
矩阵是一个向量的向量;是一个二维向量,有一个矩形的形状。
创建一个矩阵
1 | m <- matrix(c(1, 2, 3, 4, 5, 6), nrow=2) |
从矩阵中提取一个元素或一个向量
1 | m[1, 2] # 第一行, 第二列; 3 |
数据帧Data frame
数据帧Data frame(data frame是比较常用的单词,一下以data frame指数据帧)是R语言中最常用的数据结构。它是一个矩阵,其中每一列被认为是数据的一个属性,而每一行被认为是一个观察值。作为属性,每个列都有名称。如果没有明确声明,它们将被称为X1
、X2
、X3
等。
例如,在一个调查中,每一行是一个人,每一列是可以一个问题的变量(如年龄、性别、收入)。
read.table
自动将数据加载到一个data frame中。另一种创建的方法是从一个矩阵构造。
1 | df <- data.frame(m) |
提取遵循与矩阵相同的规则。一个不同之处在于提取带有df[, 2]
和df[2]
的列。注意,由于我们有每一列的名称,我们可以提取带有名称的列。
1 | df[, 2] # 如果用2个坐标系取出,列就被扁平化了。 |
Data frame中列的名称是相当重要的,下面是如何改变它们的方法:
1 | names(df) <- c("new_name_1", "new_name_2", "new_name_3") # 改变所有名字 |
布尔值和掩码
数据结构可以与布尔值交互,提供过滤筛选(掩码)后的数据来进行下一步操作。
1 | # runif(n)在0和1之间创建n个随机数 |
其他常见语法
R
的语法很直接,一些编程时常用的功能如下。
循环
1 | for (i in 1:10) { |
函数
1 | if (i > 5) { |
Functions
1 | plus_one(x) { |
可视化软件包
可以从ggplot2软件包开始了解。
R Markdown
R Markdown是一种简单的语法,用于以类似Markdown的格式编写R代码。
Conclusion
R
是一种非常强大的语言,而且非常容易学习。这只是一篇关于其一般语法和一些最常见的语法的快速介绍性文章。下一篇R教程可能是由真正的例子,来说明如何使用它来提取想要的数据并对其进行统计分析。