《R4beg_cn 2.0》Part 4——数据结构和创建对象

| 评论(0)

向量(Vector)

Vector有两个参数,mode()和length(),根据参数所指定的数据类型,数值型都为0,逻辑型都为FALSE,字符型都为""。

e.g.

> vector(mode="logical")
logical(0)
> vector(mode="numeric")
numeric(0)
> vector(mode="character")
character(0)

以下三个函数创建不同类型,参数为length:numeric()、logical()、character()。

---------------------------

因子(Factor)

一个因子不但包括分类变量本身,还包括变量不同的可能水平(即使在数据中不出现)。

e.g.

> factor(1:3)
[1] 1 2 3
Levels: 1 2 3
> factor(1:3,1:5)
[1] 1 2 3
Levels: 1 2 3 4 5
> factor(1:3,labels=c("a","b","c"))
[1] a b c
Levels: a b c
> factor(1:5,exclude=4)
[1] 1 2 3 5
Levels: 1 2 3 5


函数levels()用来提取一个因子中可能的水平值

e.g.

> ff<-factor(c(2,4),levels=2:5)
> ff
[1] 2 4
Levels: 2 3 4 5
> levels(ff)
[1] "2" "3" "4" "5"

---------------------------

矩阵(Matrix)

e.g.

> matrix(1:6,nrow=2,ncol=3)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> matrix(1:6,2,3)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> matrix(1:6,2,3,byrow=TRUE)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6


另一种创建矩阵的方法是给维数赋值,初始值为NULL

e.g.

> x<-1:15
> x
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
> dim(x)
NULL
> dim(x)<-c(3,5)
> x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 4 7 10 13
[2,] 2 5 8 11 14
[3,] 3 6 9 12 15

--------------------------------

数据框(Data Frame)

数据框可以由read.table()间接创建,也可以由data.frame()直接创建。数据框的向量长度要相同,否则较短的向量将循环整数次补齐。

e.g.

> x<-1:4;m<-c(10,35);y<-(2:4)
> data.frame(x,m)
x m
1 1 10
2 2 35
3 3 10
4 4 35
> data.frame(x,y)
Error in data.frame(x, y) : arguments imply differing number of rows: 4, 3

如果一个因子包含在一个数据框中,必须和向量长度相同。列名可以改变,如data.frame(A1=x,A2=m),也可用row.name命名,但是命名向量必须是字符型且长度等于行数。

----------------------

列表(List)

e.g.

> L1<-list(x,y);L2<-list(A=x,B=y)
> L1
[[1]]
[1] 1 2 3 4

[[2]]
[1] 2 3 4

> L2
$A
[1] 1 2 3 4

$B
[1] 2 3 4

> names(L1)
NULL
> names(L2)
[1] "A" "B"

--------------------

时间序列(Time-series)

ts()

e.g.

> ts(1:10,start=1959)
Time Series:
Start = 1959
End = 1968
Frequency = 1
[1] 1 2 3 4 5 6 7 8 9 10
> ts(1:47,frequency=12,start=c(1959,2))
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1959 1 2 3 4 5 6 7 8 9 10 11
1960 12 13 14 15 16 17 18 19 20 21 22 23
1961 24 25 26 27 28 29 30 31 32 33 34 35
1962 36 37 38 39 40 41 42 43 44 45 46 47
> ts(1:10,frequency=4,start=c(1959,2))
Qtr1 Qtr2 Qtr3 Qtr4
1959 1 2 3
1960 4 5 6 7
1961 8 9 10
> ts(matrix(rpois(36,5),12,3),start=c(1961,1),frequency=12)
Series 1 Series 2 Series 3
Jan 1961 4 1 4
Feb 1961 10 5 7
Mar 1961 4 5 4
Apr 1961 2 2 6
May 1961 4 4 10
Jun 1961 4 2 3
Jul 1961 6 6 3
Aug 1961 4 7 3
Sep 1961 4 5 5
Oct 1961 5 1 3
Nov 1961 11 6 4
Dec 1961 7 7 6

---------------------------------------

表达式(Expression)

函数expression()用来构成一个不被求值的表达式,eval()用来对创建的表达式求值

e.g.

> x<-3;y<-2.5
> x<-3;y<-2.5;z<-1
> exp1<-expression(x/(y+exp(z)))
> exp1
expression(x/(y + exp(z)))
> eval(exp1)
[1] 0.5749019

一些函数把表达式当作参数,例如可以求偏导的函数D()

e.g.

> D(exp1,"x")
1/(y + exp(z))
> D(exp1,"y")
-(x/(y + exp(z))^2)
> D(exp1,"z")
-(x * exp(z)/(y + exp(z))^2)

发表评论

最新日记

林达----"近距离看美国"系列
  大概一年半前,我在百无聊赖中混迹于一…
【每天听首外文歌】fix you
Song:fix you Artist:…
伟大的辩题
标 题: 银联杯"厦门大学第三届研究生辩…