R语言学习笔记




向量 c()

向量是用于存储数值型、字符型或逻辑型数据的一维数组。执行组合功能的函数c()可用来
创建向量。各类向量如下例所示:

#向量
a<-c(1,2,5,3,8,-2,4)
b<-c("one","two","three")
c<-c(TRUE, TRUE, TRUE,FALSE,TRUE, TRUE)

单个向量中的数据必须拥有相同的类型或模式(数值型、字符型或逻辑型)。
标量是只含一个元素的向量,例如f <- 3、g <- "US"和h <- TRUE。它们用于保存常量。

矩阵 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包含了矩阵的元素,nrowncol用以指定行和列的维数,dimnames包含了可选的、以字符型向量表示的行名和列名。选项byrow则表明矩阵应当按行填充(byrow=TRUE)还是按列填充(byrow=FALSE),默认情况下按列填充。

#矩阵
y<-matrix(1:20,nrow=5,ncol=4)`#默认按照列填充,只有两个维度

## Example of setting row and column names(来自?matrix)
mdat <- matrix(c(1,2,3, 11,12,13), nrow = 2, ncol = 3, byrow = TRUE, 
	dimnames = list(c("row1", "row2"), c("C.1", "C.2", "C.3")))
	#这里byrow按照行填充

数组 array()→同类多维

数组(array)与矩阵类似,但是维度可以大于2。数组可通过array函数创建,形式如下:

myarray <- array(vector, dimensions, dimnames) 

其中vector包含了数组中的数据,dimensions是一个数值型向量,给出了各个维度下标的最大值,而dimnames是可选的、各维度名称标签的列表。

#数组可以不只有两个维度,但必须按列填充
dim1<-c("A1","A2")
dim2<-c("B1","B2","B3")
dim3<-c("C1","C2","C3","C4")
z<-array(1:24,c(2,3,4),dimnames=list(dim1,dim2,dim3))
z
z[1,2:3,1]

z的结果是:

, , C1
B1 B2 B3
A1 1 3 5
A2 2 4 6
, , C2
B1 B2 B3
A1 7 9 11
A2 8 10 12
, , C3
B1 B2 B3
A1 13 15 17
A2 14 16 18
, , C4
B1 B2 B3
A1 19 21 23
A2 20 22 24

z[1,2:3,1]是:

3 5

数据框 data.frame()→异类二维

当数据有多种模式时,无法将此数据集放入一个矩阵。但可以使用数据框:

mydata <- data.frame(col1, col2, col3,...) 
#生成数据框
ID<-c(1,2,3,4)
Age<-c(25,34,28,52)
Dia<-c("Type1", "Type2","Type1","Type1")
Sta<-c("Poor","Improved","Excellent","Poor")
mdb<- data.frame(ID,Age,Dia,Sta)

#展示数据框内容               
names(mdb)	#按照数据顺序排序的变量名
ls(mdb)	#按照字母表顺序排序的变量名
ls(mdb,sort=F)	#按照数据顺序排序的变量名

str(mdb)	#变量名、变量类型等
summary(mdb)	#描述统计

$和attach()、detach()

$被用来选取一个给定数据框中的某个特定变量。

summary(mtcars$mpg) 
plot(mtcars$mpg, mtcars$disp) 
plot(mtcars$mpg, mtcars$wt) 

以上代码也可写成:

attach(mtcars) 
 summary(mpg) 
 plot(mpg, disp) 
 plot(mpg, wt) 
detach(mtcars) 

此外还有with函数但没学

因子factor()→分类变量

类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)。
函数factor()以一个整数向量的形式存储类别值,整数的取值范围是[1…k](其中k是名义型变量中唯一值的个数),同时一个由字符串(原始值)组成的内部向量将映射到这些整数上。

diabetes<-c("Type1", "Type2","Type1","Type1")
diabetes<-factor(diabetes)

语句diabetes <- factor(diabetes)将此向量存储为(1, 2, 1, 1),并在内部将其关联为1=Type1和2=Type2(具体赋值根据字母顺序而定)。

要表示有序型变量,需要为函数factor()指定参数ordered=TRUE

status <- c("Poor", "Improved", "Excellent", "Poor") 
status <- factor(status, ordered=TRUE)

语句status <- factor(status, ordered=TRUE)会将向量编码为(3, 2, 1, 3),并在内部将这些值关联为1=Excellent、2=Improved以及3=Poor。

也可以通过指定levels选项来覆盖默认排序。例如:

status <- factor(status, order=TRUE, 
				 levels=c("Poor", "Improved", "Excellent")) 

各水平的赋值将为1=Poor、2=Improved、3=Excellent。
拓展: R语言中的数据类型之factor因子
factor可用于回归。

列表 list()→异类多维

列表(list)是R的数据类型中最为复杂的一种。一般来说,列表就是一些对象(或成分,component)的有序集合。列表允许你整合若干(可能无关的)对象到单个对象名下。

###list列表
mylist<-list(object1,object2,...)	#其中的对象可以是向量、矩阵、数组、数据框、因子
mylist <- list(name1=object1, name2=object2, ...)#命名
####2-7创建一个列表
g <- "My First List" 
h <- c(25, 26, 18, 39) 
j <- matrix(1:10, nrow=5) 
k <- c("one", "two", "three") 
mylist <- list(title=g, ages=h, j, k)
mylist

mylist[[2]]
mylist[["ages"]]

mylist的运行结果:

$title
[1] “My First List”
$ages
[1] 25 26 18 39
[[3]]
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
[[4]]
[1] “one” “two” “three”

mylist[[2]]
mylist[["ages"]]

这两个的结果都是一样的,都是25 26 18 39。

注意

R中的下标不从0开始,而从1开始。
变量无法被声明。它们在首次被赋值时生成。

更多推荐