R 语言学习笔记 02 数据结构
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包含了矩阵的元素,nrow和ncol用以指定行和列的维数,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开始。
变量无法被声明。它们在首次被赋值时生成。
更多推荐
所有评论(0)