R的基础学习之数据结构

来源:http://blog.qiubio.com:8080/archives/3753/4

 

1.atomic vector :一维的,放置同一类型数据的数据类型

1.1创建:由c()函数 ,seq()函数,rep()等函数创建。

>a<-c(a,b,c)   #combine,将c()函数的参数联合起来成一个向量

>a<-seq(1,3) #sequence,以一定的间隔形成一个向量(等比数列),默认项差为1.
>a
#1,2,3
>a<-1:3
>a
#1,2,3   

>a<-rep(1,100) #repeat,第一个参数为重复的量,第二个参数为重复次数.
#rep(x,times=1,length.out=NA,each=1)
>a<-rep(c(1,2),times=2)
>a
[1]1 2 1 2 #向量重复
>a<-rep(c(1,2),each=2)
[1]1 1 2 2 #向量元素重复

1.2访问方式:通过索引或是通过names属性

>a<letters[1:5]
>names(a)<-LETTERS[1:5]  #属性的个数必须和元素个数一致
>a[1]
#[1] "a"
>a["A"]
# A
a

 

2.list :一维的,可以放置不同类型数据

> a <- list(num = 1:3, alphabet = letters[1:3])
>names(a)
#[1] "num" "alphabet"

>a$num #通过$访问元素
[1]1 2 3
>a[[1]]  #通过[[]]访问元素
[1]1 2 3 

>a[1]  #通过[]获得子list
$num
[1] 1 2 3 

  

3.matrix:二维的,放置同种类型数据

3.1用matrix函数创建矩阵

>a<-11:22
>m<-matrix(a,ncol=3,nrow=4)#ncol,列数;nrow,行数
>m
##      [,1] [,2] [,3]
## [1,]    11    15   1 9
## [2,]    12    16   20
## [3,]    13    17   21
## [4,]    14    18   22

>m[7] #使用访问atomic vector的方法访问matrix
[1] 17
>m[3,2]#使用访问matrix的方法访问
[1] 17
>m[,2]#访问第二列
[1] 15 16 17 18
>m[,2,drop=FALSE]#访问第二列,但仍保持matrix形式
   [,1]
[1,] 15
[2,] 16
[3,] 17
[4,] 18

####矩阵的方法和属性####
>dim(m) #矩阵的大小
[1] 4 3
>ncol(m)#矩阵的列数
[1] 3
>nrow(m)#矩阵的行数
[1] 4

>rownames(m)<-letters[1:4]#增加row的名称
>colnames(m)<-Letters[1:3]#增加column的名称
>m
##    A  B  C
## a  1  2  3
## b  4  5  6
## c  7  8  9
## d 10 11 12

>d<-matrix(1:12,ncol=3,nrow=4)
>row<-rbind(d,m) #rbind=row bind 增加row,column保持不变
>col<-cbind(d,m) #cbind=column bind 增加column,row保持不变

>t(d) #t()函数(transpose),转置。

 

4.Data frame:Data frame就是由一系列长度相等的vectors构成。它继承了vector的所有方法,包括atomic vector和list的方法,比如访问某一列可以使用'$'符号。它是2维的,它一样也有和matrix相同的方法。

4.1用data.frame()函数创建

> df <- data.frame(A = 1:3, B = letters[1:3]) #接受的参数是atomic vector
> df
##   A B
## 1 1 a
## 2 2 b
## 3 3 c

>str(df)
## 'data.frame':    3 obs. of  2 variables:
##  $ A: int  1 2 3
##  $ B: Factor w/ 3 levels "a","b","c": 1 2 3

>df$A   #访问元素,返回一个atomic vector.
##[1] 1 2 3
>is.atomic(df$A)
[1] TRUE >df[["B"]] ## [1] a b c ## Levels: a b c
>is.atomic([["B"]])
[1] TRUE >df[1,] #和matrix一样的方法 ## A B 1 1 a >cbind(df,C=0) ## A B C ## 1 1 a 0 ## 2 2 b 0 ## 3 3 c 0

  

下表总结了不同数据结构取值的方法。赋值使用'<-'可以使用”<-“, ”=“, 以及”->“三种形式的赋值符号。但本书只推荐使用'->'做为赋值符号。

 降维保持
Vector x[[1]] x[1]
List x[[1]] x[1]
Factor x[1:4, drop = T] x[1:4]
Array x[1, ] or x[, 1] x[1, , drop = F] or x[, 1, drop = F]
Data frame x[, 1] or x[[1]] x[, 1, drop = F] or x[1]

posted on 2017-07-04 22:29  青萍,你好  阅读(345)  评论(0编辑  收藏  举报

导航