资料来自于:R语言入门经典
1、向量(Vector) :
函数vector有两个参数:类型(mode)和长度(length),创建的向量中元素值取决于参数所指定的数据类型:数值型向量则元素值都为0,逻辑型都为FALSE,字符型都为""。以下三个函数有几乎相同的效果(创建一个向量)并且只有一个参数即长度:numeric(),logical(),和character()。
2、因子(Factor) :
一个因子不仅包括分类变量本身还包括变量不同的可能水平(即使它们在数据中不出现)。因子函数factor用下面的选项创建一个因子:
factor(x, levels = sort(unique(x), na.last = TRUE),
labels = levels, exclude = NA, ordered = is.ordered(x))
levels 用来指定因子可能的水平(缺省值是向量x中互异的值);labels用来指定水平的名字;exclude表示从向量x中剔除的水平值;ordered是一个逻辑型选项用来指定因子的水平是否有次序。回想数值型或字符型的x。下面有一些例子:
> factor(1:3)
[1] 1 2 3
Levels: 1 2 3 > factor(1:3, levels=1:5) [1] 1 2 3 Levels: 12345 > 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 NA 5 Levels: 1235
函数levels用来提取一个因子中可能的水平值:
> ff <- factor(c(2, 4), levels=2:5)
> ff [1] 2 4 Levels: 2345
> levels(ff) [1] "2" "3" "4" "5"
3、矩阵(Matrix) :
一个矩阵实际上是有一个附加属性(维数dim)的向量,维数即为一个长度为2的向量,用来指定矩阵的行数和列数。一个矩阵可以用函数matrix来创建:
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,
dimnames = NULL)
选项byrow表示数据给出的值是要按列填充(缺省值)还是按行填充(如果为TRUE)。可以通过选项dimnames给行列命名。
> matrix(data=5, nr=2, nc=2)
[,1] [,2]
[1,] 5 5
[2,] 5 5
> 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):
> 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(5, 3)
>x
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 2 7 12
[3,] 3 8 13
[4,] 4 9 14
[5,] 5 10 15
4、数据框(Data frame) :
前面我们已经看到一个数据框可以由函数read.table 间接创建;这里也可以用函数data.frame来创建。数据框中的向量必须有相同的长度,如果其中有一个比其它的短,它将“循环”整数次(以使得其长度与其它向量相同):
> x <- 1:4; n <- 10; M <- c(10, 35); y <- 2:4
> data.frame(x, n)
> 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=n)。用户也可以使用row.names给行命名,但是,这个命名向量必须是字符型的而且长度等于这个数据框的行数。最后,注意数据框和矩阵一样有维数这个属性。
5、列表(List) :
列表可以用list函数创建,方法与创建数据框类似。它对其中包含的对象没有什么限制。和data.frame()比较,缺省值没有给出对象的名称;用前面的向量x和y举例:
> 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"
6、时间序列(Time-series) :
函数ts可以由向量(一元时间序列)或者矩阵(多元时间序列)创建一个ts型对象,并且有一些表明序列特征的选项(带有缺省值),它们是:
ts(data = NA, start = 1, end = numeric(0), frequency = 1,
deltat = 1, ts.eps = getOption("ts.eps"), class, names)
data 一个向量或者矩阵
start 第一个观察值的时间,为一个数字或者是一个由两个整数构成的向量
end 最后一个观察值的时间,指定方法和start相同
frequency 单位时间内观察值的频数(频率)
deltat 两个观察值间的时间间隔(例如,月度数据的取值为1/12);frequency和deltat必须并且只能给定其中之一
ts.eps 序列之间的误差限。如果序列之间的频率差异小于ts.eps则认为这些序列的频率相等。
class 对象的类型;一元序列的缺省值是"ts",多元序列的缺省值是c("mts", "ts")
names 一个字符型向量,给出多元序列中每个一元序列的名称;缺省为data中每列数据的名称或者Series 1,
用ts创建时间序列的一些例子:
> 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