R语言基础知识学习(二):R中的矩阵,数据框,列表和时间序列

一、矩阵(matrix)

R中的矩阵是带有维度(dim)的向量,可用matrix()函数来输入,具体如下:

matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)

byrow:按行排列,默认是false,即默认是按列排列的。

例如:

> matrix(1:6,2,3)
       [,1] [,2] [,3]
[1,]    1     3   5
[2,]    2     4   6

> matrix(1:8,2,4,TRUE)
  [,1] [,2] [,3] [,4]
[1,]  1     2    3     4
[2,]  5     6    7     8

 

另一种构造矩阵的方法是给向量加一个维度值,如:

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

默认向量的维度是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)

数据框可用函数data.frame()来创建,具体如下:

data.frame(..., row.names = NULL, check.rows = FALSE,check.names = TRUE, fix.empty.names = TRUE, stringsAsFactors = default.stringsAsFactors())

> x <- 1:12
> y <- 3:14
> f1 <- data.frame(x,y)
> f1
x y
1 1 3
2 2 4
3 3 5
4 4 6
5 5 7
6 6 8
7 7 9
8 8 10
9 9 11
10 10 12
11 11 13
12 12 14


> z <- c(1,2,3,4)
> f2 <- data.frame(x,z)
> f2
x z
1 1 1
2 2 2
3 3 3
4 4 4
5 5 1
6 6 2
7 7 3
8 8 4
9 9 1
10 10 2
11 11 3
12 12 4

数据框的两个向量必须具有相同的长度,如果其中一个比较短,它将循环之。

数据框的列名可以改变,如:

> m <- 1:5
> n <- 6:10
> data.frame(A=m,B=n)
 A B
1 1 6
2 2 7
3 3 8
4 4 9
5 5 10

也可以用row.names()函数给行命名,如:

>f1<- data.frame(A=m,B=n)

> row.names(f1) <- c('a1','a2','a3','a4','a5')
> f1
A B
a1 1 6
a2 2 7
a3 3 8
a4 4 9
a5 5 10

dim()函数给出了数据框的维度

> dim(f1)
[1] 5 2

三、列表(list)

列表可用函数list()来创建,它度其中包含的对象没什么限制。如:

> x <- 1:4
> y <- 2:4

> z <- 4:5
> l1 <- list(x,y)
> l1
[[1]]
[1] 1 2 3 4

[[2]]
[1] 2 3 4

 

> l2 <- list(A=x,B=z)
> l2
$A
[1] 1 2 3 4

$B
[1] 4 5

 

> w <- c('China','Japan','America')
> list(x,w)
[[1]]
[1] 1 2 3 4

[[2]]
[1] "China" "Japan" "America"

 

四、时间序列(time-series)

函数ts()可以由向量(一元时间序列)或者矩阵(多元时间序列)创建一个ts型对象,并且有一些表明序列特征的选项(带有缺省值)

ts(data = NA, start = 1, end = numeric(), frequency = 1, deltat = 1, ts.eps = getOption("ts.eps"), class = , names = )

 

> ts(matrix(rpois(36,5),12,3),start = c(1965,2),frequency = 12)
Series 1 Series 2 Series 3
Feb 1965  6 5 7
Mar 1965 8 6 7
Apr 1965 7 5 5
May 1965 7 6 7
Jun 1965 7 4 4
Jul 1965 4 8 4
Aug 1965 2 4 6
Sep 1965 10 8 5
Oct 1965 6 6 2
Nov 1965 9 3 8
Dec 1965 7 7 10
Jan 1966 7 9 3

> ts(matrix(rpois(36,5),12,3),start = c(1965,2),frequency = 4)
Series 1 Series 2 Series 3
1965 Q2 8 7 3
1965 Q3 2 6 6
1965 Q4 5 4 10
1966 Q1 3 4 4
1966 Q2 3 4 5
1966 Q3 8 1 7
1966 Q4 5 6 3
1967 Q1 4 7 8
1967 Q2 7 6 4
1967 Q3 2 2 2
1967 Q4 8 9 5
1968 Q1 6 8 4

 

转载于:https://www.cnblogs.com/malt927/p/6039143.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值