概述
R软件的使用
- 前言
- 一、多维数组和矩阵
- 1.1 构造
- 1.2 索引
- 1.3 运算
- 二、列表与数据框
- 2.1 列表构造
- 2.2 列表索引
- 2.3 数据框生成
- 2.4 数据框索引
- 总结
前言
啥也不多说,学就对了!题外话,其实我是先接触的C语言,之后接触Python和Matlab,现在接触了R语言,其实我最大的感触是学完C语言,不怎么用,之后就几乎忘得差不多了,但是它的逻辑精髓影响着我的其他语言的学习,当然还有一个困扰我的地方是,对于我这号初学者,python,matlab,R语言的一些语法很容易记混,尤其是在写循环和索引的时候,不知道大家是否和我一样有这样的困扰,求大佬指点!
提示:以下是本篇文章正文内容,上面的话仅代表个人观点。
一、多维数组和矩阵
数组(array)可以看成是带多个下标的类型相同元素的集合,常用的是数值型数组如矩阵。R软件可以很容易地生成和处理数组。
数组有一个特殊地属性叫做维数向量,即dim属性。
1.1 构造
将向量定义成数组(向量定义了维数才是数组)。
array()函数构造数组
matrix()函数构造矩阵
注意矩阵的元素是按列存放的 ,构造矩阵时默认值byrow=False,按列排。
> #构建数组
> a=1:8
> dim(a)=c(2,4)
> a
[,1] [,2] [,3] [,4]
[1,] 1 3 5 7
[2,] 2 4 6 8
> dim(a)=8
> a
[1] 1 2 3 4 5 6 7 8 #也可定义为一维数组
> x=array(1:12,dim = c(3,4))
> x
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> #构建矩阵
> #默认值byrow=False,按列排
> A=matrix(1:15,nrow = 3,ncol = 5,byrow = T)
> A
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
[3,] 11 12 13 14 15
1.2 索引
> a=1:24
> dim(a)=c(2,3,4)
> a
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12
, , 3
[,1] [,2] [,3]
[1,] 13 15 17
[2,] 14 16 18
, , 4
[,1] [,2] [,3]
[1,] 19 21 23
[2,] 20 22 24
> a[2,1,2]
[1] 8
> a[1,2:3,2:3]
[,1] [,2]
[1,] 9 15
[2,] 11 17
> a[1,,]
[,1] [,2] [,3] [,4]
[1,] 1 7 13 19
[2,] 3 9 15 21
[3,] 5 11 17 23
> a[,2,]
[,1] [,2] [,3] [,4]
[1,] 3 9 15 21
[2,] 4 10 16 22
> a[1,1,]
[1] 1 7 13 19
> a[3:10]
[1] 3 4 5 6 7 8 9 10
1.3 运算
数组的运算:数组的加减运算满足矩阵运算的性质,但是数组的乘除运算实际上是对应位置的元素在做运算。
> #运算
> A=matrix(1:6,nrow = 2,byrow = T);A
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
> B=matrix(1:6,nrow = 2);B
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> C=matrix(c(1,2,3,4,5,5),nrow = 2);C
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 5
> D=2*C+A/B;D
[,1] [,2] [,3]
[1,] 3 6.666667 10.6
[2,] 6 9.250000 11.0
> #矩阵运算
> t(A) #转置
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
> M=matrix(1:4,ncol =2);M
[,1] [,2]
[1,] 1 3
[2,] 2 4
> det(M) #矩阵行列式的值
[1] -2
> x=1:5;y=3*1:5
> x%*%y#内积
[,1]
[1,] 165
> crossprod(x,y) #内积
[,1]
[1,] 165
> x%o%y #外积
[,1] [,2] [,3] [,4] [,5]
[1,] 3 6 9 12 15
[2,] 6 12 18 24 30
[3,] 9 18 27 36 45
[4,] 12 24 36 48 60
[5,] 15 30 45 60 75
> outer(x,y)
[,1] [,2] [,3] [,4] [,5]
[1,] 3 6 9 12 15
[2,] 6 12 18 24 30
[3,] 9 18 27 36 45
[4,] 12 24 36 48 60
[5,] 15 30 45 60 75
> m=array(1:9,dim = (c(3,3)))
> n=array(9:1,dim = (c(3,3)))
> m*n #代表矩阵对应元素的乘积
[,1] [,2] [,3]
[1,] 9 24 21
[2,] 16 25 16
[3,] 21 24 9
> m%*%n #代表矩阵的乘积
[,1] [,2] [,3]
[1,] 90 54 18
[2,] 114 69 24
[3,] 138 84 30
> diag(M) #矩阵对角元素
[1] 1 4
> diag(c(1,2,3)) #创建对角矩阵
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 2 0
[3,] 0 0 3
关于矩阵的拼接,函数cbind()把自变量按照横向拼成一个矩阵,高度相同。函数rbind()把自变量进行纵向拼接,宽度相同。dimnames()可以进行数组的维命名。aperm()函数可以按照指定新次序重新排列。
> #数组维度命名
> x=matrix(1:4,nrow = 2,
+ dimnames = list(c("A","B"),c("m","n")),
+ byrow = T)
> x
m n
A 1 2
B 3 4
> aperm(x,c(2,1))
A B
m 1 3
n 2 4
apply函数可以对数组(矩阵)的一维或者若干维进行某种计算。
> A=matrix(1:6,ncol = 2);A
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
> apply(A,1,sum)
[1] 5 7 9
> apply(A,2,mean)
[1] 2 5
二、列表与数据框
2.1 列表构造
列表是一个特别的对象集合,其元素也由下标区分,但是其不同元素不必是同一类型。
2.2 列表索引
注意列表不同意向量,列表每次只能引用一个元素。列表元素可以采用“列表名[[下标]]”(两重括号)或者”列表吗$元素名“来进行引用。
值得注意的是一重括号也是合法的,但是结果类型是列表。
示例如下:
> #列表构造
> ky=list(name="ky",age="2",num=c(1,2,1))
> ky
$name
[1] "ky"
$age
[1] "2"
$num
[1] 1 2 1
> ky[["name"]]
[1] "ky"
> ky$age
[1] "2"
突然发现原来代码可以直接插入r的代码块,张见识了。
2.3 数据框生成
数据框(data.frame)是R语言中的一种数据结构,是一种特殊的列表类型。数据框的每列是一个变量,每行是一个观测。作为数据框变量的向量、因子或矩阵必须有相同的长度(行数)常常把数据框看作一个推广的矩阵。
2.4 数据框索引
数据框的元素索引与矩阵类似,可以采用下标或者下标向量,也可以直接使用名字或名字向量。当然数据框额度属性也可以按列表引用(采用双括号[[ ]],或者$来引用)
代码如下(示例):
> #数据框
> df=data.frame(
+ name=c("a","b","c"),
+ age=c(1,2,3),
+ wel=c(4,5,6)
+ )
> #索引
> df[2:3,1:2]
name age
2 b 2
3 c 3
> df$age
[1] 1 2 3
下边记录一个attach()函数,这个是干啥用的嘞?就是一句话让你省事儿的,不用你老一直“数据框名$变量名“的输入,它可以直接把数据框中的变量”链接“到内存中,这样就可以直接调用数据框中的变量啦。
> attach(df)
> r=age*2
> r
[1] 2 4 6
如果你不想”链接“了,调用一下detach()就ok,无参数即可。
总结
每次一到考试前的学习时间,嘿嘿嘿就有好多事情蹦出来,谨言慎行,很多事情很残酷,但是你却不得不去直面,成长的道路很充满荆棘,在此感谢那些逼着我直面现实的人,让我不断打破自己为自己编织的安乐窝。生于忧患,死于安乐。继续学习,不断努力!
最后
以上就是仁爱大船为你收集整理的一起学习R软件吧——数组、矩阵、列表、数据框前言一、多维数组和矩阵二、列表与数据框总结的全部内容,希望文章能够帮你解决一起学习R软件吧——数组、矩阵、列表、数据框前言一、多维数组和矩阵二、列表与数据框总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复