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 182.:和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.03.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 42.矩阵运算
常用运算符号有“+、-、、/”,其中值得注意的是矩阵利两两相乘的符号为“%%”,转置使用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
















