R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。在学习R数据科学之前,我们首先要对R语言的基础语法有一个良好的了解,方便我们理解以后的数据科学算法。本次语法精讲分三次讲完,每次负责讲解其中一部分!本次的R语言语法精讲(一)主要介绍了 R语言的数据结构,R语言的运算以及R语言的编程结构。学完本文后,您将可以具备初步的R语言编程技巧,并能编写大部分程序以及算法。
本文引用:
《R语言实战--第2版》---------Robert I.Kabacoff 《统计计算与模拟》课程课件-------深圳大学林炳清老师
本文内容:
- R常用数据结构(本文)
- R的运算以及常用函数(本文)
- R语言编程结构(本文)
判断if-else(本文)
循环for、while、repeat(本文)
自定义函数(本文) - R的输入与输出
- R基础绘图
- 基本数据管理
- 高级数据管理
1. R常用数据结构
R拥有许多用于存储数据的对象类型,包括标量、向量、矩阵、数组、数据框和列表。它们在存储数据的类型、创建方式、结构复杂度,以及用于定位和访问其中个别元素的标记等方面均有所不同。
1.1 向量(Vector)
我们可以把vector想象:vector是一串糖葫芦,把山楂都串在一起。vector包含的是一串数据,要求这一串的数据类型是一样的。在R中,常见的数据类型有3种:
- numeric (数值型, Ex, 1, 3.14, -2。在R中,我们可以不区分整数型,浮点型,双精度型等)
- character (字符型, Ex, “a”, “hello world”)
- logical (布尔型, Ex, “TRUE” and “FALSE”)
(1) 创建向量:
我们可以使用 c() 创造一个vector, c是英文单词cancatenate的缩写,意思是连结,连锁。所以c()可以把括号里的数字或者其他的数据类型的元素串成一个vector. 例如:(<-代表R语言中的赋值符号,绝大多数也可以用=代替;相当于python的“=”)
a
这里,a是数值型向量,b是字符型向量,而c是逻辑型向量。 注意,单个向量中的数据必须拥有相同的类型或模式(数值型、字符型或逻辑型) 。同一向量中无法混杂不同模式的数据。
(2) 向量vector的索引
vector索引指的是R会给vector的每个元素一个位置坐标。R的位置坐标从1开始,从左到右依次给予vector的每个元素。例如:
a <- c("k", "j", "h", "a", "c", "m")
a[3]
a[c(1, 3, 5)]
a[2:6]
此外,我们还可以很方便的输出vector除去某些位置的对应元素后的vector, 例如:
x <- c(1, 3, 6, 4)
x[-c(3, 4)]
我们还可以用names()函数给vector的每一个元素赋予一个名字,例如:
score <- c(98, 100, 60, 20) # score 表示一次考试的成绩
names(score) <- c("Lin", "Wang", "Chen", "Sun") # score 每一个成绩对应的人名
score
score[2]
score["Wang"] # 可以通过vector元素的名字得到第二个同学的成绩
(3) 产生常用vector的方法::, seq(), rep()
1:50
6:2
-5:-10
seq(from = 3, to = 10)
seq(from = 1, to = 10, by = 2) # seq()可以自定义递增或者递减的步长
rep(10, 5) # 产生一个vector, 该vector包含5个10
rep(c(2:4), 3) # 产生一个vector, 该vecotr包含3个 `c(2:4)`
rep("I Love R!", 3)
1.2 矩阵matrix
矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。可通过函数matrix()创建矩阵。一般使用格式为:
myymatrix <- matrix(vector, nrow=number_of_rows, ncol=number_of_columns,byrow=logical_value, dimnames=list(char_vector_rownames, char_vector_colnames))
其中vector包含了矩阵的元素,nrow和ncol用以指定行和列的维数,dimnames包含了可选的、以字符型向量表示的行名和列名。选项byrow则表明矩阵应当按行填充(byrow=TRUE)还是按列填充(byrow=FALSE) ,默认情况下按列填充。代码清单2-1中的代码演示了matrix函数的用法。
(1) 创建矩阵
我们首先创建了一个5×4的矩阵, 接着创建了一个2×2的含列名标签的矩阵, 并按行进行填 充,最后创建了一个2×2的矩阵并按列进行了填充。
y <- matrix(1:20, nrow=5, ncol=4) # 创建一个5×4的矩阵
y
cells <- c(1,26,24,68)
rnames <- c("R1", "R2")
cnames <- c("C1", "C2")
mymatrix <- matrix(cells, nrow=2, ncol=2, byrow=TRUE, # 按行填充的2×2矩阵
dimnames=list(rnames, cnames))
mymatrix
mymatr