2022年7月23日

  • 数据类型
    R语言中常用的数据类型有:

逻辑型

logical

整数型

integer

双精度型

double

字符型

character

复数型

complex

原生型

raw

常用查看对象的函数:

class()


typeof()

类型

str()

对象结构

在R语言中赋值使用

<-
例如:
x<-1,y<-1L
  • 向量
    1.函数c
    用于创建向量,其结构为出c(),括号里面可以填入要输入的数据;
x=c(0.5,0.6)
x
#建立一个向量x,显示结果为:
0.5,0.6

还有一种结构为c(a,b),可以配合dim()使用

x=c(2:9)
dim(x)=c(2,4)
x
#此时通过结合向量函数和纬度函数将x转换成了2*4的矩阵

还有一种结构为c(a,b,c),a代表行数,b代表列数,c代表数组数。是创建的一种方式

x=1:18
dim(x)=c(3,3,2);x
#设定向量X的维度,将向量X转变成由2个2x3的矩阵构成,显示数组x
, , 1

     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

, , 2

     [,1] [,2] [,3]
[1,]   10   13   16
[2,]   11   14   17
[3,]   12   15   18

2.:和seq

使用符号:是建立向量的另一种方式,函数seq()可以建立等间距的数列

x=1:18
x
#建立一个名称为x的向量,并显示
[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18

z=seq(from=-3,to=2,by=0.5)
z
#建立一个向量z,向量元素从-3到2,间隔0.5.
#seq()默认结构为seq(开始值,结束值,步长)
[1] -3.0 -2.5 -2.0 -1.5 -1.0 -0.5  0.0  0.5  1.0  1.5  2.0

3.rep()和抽样函数

函数rep()是repeat的缩写,结构为rep(a,b)——a表示被重复的对象,b表示重复的次数。

> x=rep(1:4,c(2,3,4,5));x
 [1] 1 1 2 2 2 3 3 3 3 4 4 4 4 4
> y=rep(1:100,2)
> y
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19
 [20]  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38
 [39]  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57
 [58]  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76
 [77]  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95
 [96]  96  97  98  99 100   1   2   3   4   5   6   7   8   9  10  11  12  13  14
[115]  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33
[134]  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52
[153]  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71
[172]  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
[191]  91  92  93  94  95  96  97  98  99 100

抽样函数rnorm(),runif().分别表示从正太分布中随机抽取10个数字和按均匀分布随机抽取实数

x=rnorm(10)#10表示抽取的个数
> x
 [1] -0.67525919 -0.37852913  0.03390455 -0.08398035  0.58708396 -0.82126062
 [7] -0.62595253 -2.03877981 -0.83222555  0.99119773
> y=runif(10,4,7)#10表示抽取的个数,4和7表示抽取的区间。
> y
 [1] 5.604858 6.165943 5.391762 6.623728 5.913110 6.175635 5.880116 6.422979
 [9] 5.232792 4.694503
  • 矩阵
    1.构建矩阵的三个方法
#法一
#利用dim()将向量转换为矩阵
x=2:9
> dim(x)=c(2,4)#表示2x4的矩阵
> x
     [,1] [,2] [,3] [,4]
[1,]    2    4    6    8
[2,]    3    5    7    9

#法二
#利用矩阵函数直接建立
> x=matrix(2:9,2,4)#参数含义,2:9表示数据,后面分别表示行列
> x
     [,1] [,2] [,3] [,4]
[1,]    2    4    6    8
[2,]    3    5    7    9

#默认按列排序,可以使用byrow函数来修改,byrow=TRUE表示按行排序。
#注意:在R语言中,大小写有严格的意义不能随便修改。
X=matrix(2:9,2,4,byrow = TRUE)
> 
> X
     [,1] [,2] [,3] [,4]
[1,]    2    3    4    5
[2,]    6    7    8    9
#法三
#通过向量的组合的方式建立矩阵,用到rbind()和cbind()
#二者区别在于排列方式不同
> x=rbind(c(1,2,3,4),c(1,2,3,4))
> x
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    1    2    3    4

> y=cbind(c(1,2,3,4),c(1,2,3,4))
> y
     [,1] [,2]
[1,]    1    1
[2,]    2    2
[3,]    3    3
[4,]    4    4

2.矩阵运算

常用运算符号有“+、-、、/”,其中值得注意的是矩阵利两两相乘的符号为“%%”,转置使用t()

x%*%t(y)
     [,1] [,2]
[1,]   54  110
[2,]  110  230

常用矩阵运算函数

函数

说明

chol(x)

进行乔里斯基分解

col(x)

返回x所在的列号矩阵(x的各元素替换为所在列的列号)

diag(x)

生成对角阵

ncol(x)

返回列数

nrow(x)

返回行数

qr(x)

矩阵x的QR分解

row(x)

返回x的行号矩阵

solve(A,b)

求解Ax=b中的x

solve(x)

计算x的逆矩阵

svd(x)

矩阵x的奇异值分解

var(x)

矩阵x列与列之间的协方差

3.数组

建立数组

#法一,通过array()函数直接建立
y=array(c(2:9,12:19,22:29),dim=c(2,4,3))
> y
, , 1

     [,1] [,2] [,3] [,4]
[1,]    2    4    6    8
[2,]    3    5    7    9

, , 2

     [,1] [,2] [,3] [,4]
[1,]   12   14   16   18
[2,]   13   15   17   19

, , 3

     [,1] [,2] [,3] [,4]
[1,]   22   24   26   28
[2,]   23   25   27   29

#法二,通过向量函数的结构建立
x=1:18
dim(x)=c(3,3,2)
x
, , 1

     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

, , 2

     [,1] [,2] [,3]
[1,]   10   13   16
[2,]   11   14   17
[3,]   12   15   18
  • 数据框
    1、加载数据
    使用data(数据集)函数可以加载数据,head(数据集)调用前6行数据
#以R的一个内数据集longley为例
> data(longley)
> head(longley)
     GNP.deflator     GNP Unemployed Armed.Forces Population Year Employed
1947         83.0 234.289      235.6        159.0    107.608 1947   60.323
1948         88.5 259.426      232.5        145.6    108.632 1948   61.122
1949         88.2 258.054      368.2        161.6    109.773 1949   60.171
1950         89.5 284.599      335.1        165.0    110.929 1950   61.187
1951         96.2 328.975      209.9        309.9    112.075 1951   63.221
1952         98.1 346.999      193.2        359.4    113.270 1952   63.639
> rownames(longley)#获取数据集的行名
 [1] "1947" "1948" "1949" "1950" "1951" "1952" "1953" "1954" "1955" "1956" "1957"
[12] "1958" "1959" "1960" "1961" "1962"
> names(longley)#获取数据集的列名
[1] "GNP.deflator" "GNP"          "Unemployed"   "Armed.Forces" "Population"  
[6] "Year"         "Employed"

2、自建数据集

利用data.frame可以将向量合并成数据框。

> y1=sample(c(FALSE,TRUE),size=20,replace=TRUE)
> y2=rnorm(20)
> x=sample(c("AA","A","B"),size = 20,replace = TRUE)
> mydata=data.frame(y1,y2,x);head(mydata)
     y1         y2  x
1 FALSE -0.4730771 AA
2  TRUE  0.2091883  A
3  TRUE  0.8160555  B
4  TRUE  1.0087112 AA
5 FALSE -0.6004838  B
6  TRUE  0.3276120 AA