R中用于存储数据的结构有:向量、矩阵、数组、数据框、列表
一、创建不同数据结构的数据集
1、向量
函数c()
一维数组,用于存储数值型、字符型、逻辑型数据。同一向量中元素的数据模式必须一致,无法混杂不同模式的数据。
示例:
aa <- c(1:20) # 数值型向量
bb <- c("one", "two", "three", "four") # 字符型向量
cc <- c("a","b","c","d","e") # 字符型向量
dd <- c(TRUE, TRUE, FALSE, FALSE) # 逻辑型向量
2、矩阵
函数matrix()
, 二维数组,用于存储数值型、字符型、逻辑型数据。同一矩阵中元素的数据模式必须一致,无法混杂不同模式的数据。
一般格式:
mymatrix <- matrix(vector, nrow = mumber_of_rows, ncol = number_of_colums,
byrow = logical_value,
dimnames = list(char_vector_rownames, char_vector_colnames))
示例:
mymatrix <- matrix(1:20, nrow = 4, ncol = 5,
byrow = TRUE, dimnames = list(bb,cc))
mymatrix
mymatrix2 <- matrix(1:20,4,5,T,list(bb,cc))
mymatrix2
3、数组
函数array()
, 维度可以大于2,用于存储数值型、字符型、逻辑型数据。同一数组中元素的数据模式必须一致,无法混杂不同模式的数据。
一般格式:
myarray <- array(vector, dimensions, dimnames)
示例:
myarray <- array(aa,c(2,2,5), dimnames = list())
myarray
dim1 <- c("A1","A2")
dim2 <- c("B1","B2")
dim3 <- c("C1","C2","C3","C4","C5")
dimnames(myarray) <- list(dim1,dim2,dim3)
myarray
4、数据框
函数data.frame()
,二维数据集,同一数据框中,不同列的数据模式可以不同。是R中最常用的数据结构。
一般格式:
mydf <- data.frame(col1, col2,col3)
示例:
AA <- c(4,3,2,1)
BB <- c("one","two","three","four")
CC <- c( TRUE, FALSE, TRUE,FALSE)
mydf <- data.frame(AA,BB,CC)
mydf
colnames(mydf) <- c("a","b","c")
rownames(mydf) <- AA
mydf
5、列表
函数list()
, 就是一些对象的有序集合,可以把任何对象整合进一个列表中。
一般格式:
mylist <- list(object1, object2, ...)
mylist <- list(name1 = object1, name2 = object2, ...)
示例:
mylist <- list(ob1 = aa,ob2 = bb,dd,mymatrix, myarray, mydf)
mylist
二、选取数据结构中的子集
1、向量
使用方括号+坐标值
aa[3]
bb[c(1,3,4)]
dd[1:3]
2、矩阵
使用方括号+坐标值
mymatrix
mymatrix[2,]
mymatrix[,5]
mymatrix[2,5]
mymatrix[2,c(4:5)]
mymatrix[c(2:4),c(4:5)]
mymatrix[c(1,4),c(1,3)]
3、数组
使用方括号+坐标值
myarray
myarray[1, , ]
myarray[, 2, ]
myarray[, , 3]
myarray[1, 2, 3]
4、数据框
使用方括号+坐标值,或者使用$符号+列名
mydf
mydf[1,]
mydf[,2]
mydf[1,2]
mydf[c(1:3),c(2:3)]
mydf[1]
mydf[3]
mydf[c(1,3)]
mydf$a
5、列表
使用方括号+元素坐标值,或者使用$符号+元素名称
mylist
mylist[1]
mylist[c(1:3)]
mylist$ob1
三、数据类型转换
is.datatype()
用来判断数据的类型
as.datatype()
用来转换数据的类型
示例:
is.numeric(aa)
is.character(aa)
is.vector(aa)
is.matrix(aa)
is.data.frame(aa)
is.factor(aa)
is.logical(aa)
is.list(aa)
as.numeric(aa)
as.character(aa)
as.vector(aa)
as.matrix(aa)
as.data.frame(aa)
as.factor(aa)
as.logical(aa)
as.list(aa)
as.data.frame(mymatrix)
as.matrix(mydf)
is.numeric(mydf)
as.data.frame(mydf)
is.numeric(mydf$a)
is.character(mydf$a)
mydfmatrix <- as.matrix(mydf)
mydfmatrix
is.character(mydfmatrix)
mylist
as.data.frame(mylist[6])
is.data.frame(mylist[6])
四、总结
数据结构 | 如何创建 | 如何判断 | 如何转换 | 元素类型是否必须一致 | 取子集 |
---|---|---|---|---|---|
向量 | c() | is.vector() | as.vector() | 是 | []+坐标值 |
矩阵 | matrix() | is.matrix() | as.matrix() | 是 | []+坐标值 |
数组 | array() | is.array() | as.array() | 是 | []+坐标值 |
数据框 | data.frame() | is.data.frame() | as.data.frame() | 否 | []+坐标值、$+列名 |
列表 | list() | is.list() | as.list() | 否 | []+坐标值、$+元素名 |
网友评论