1、创建一个向量(随机向量,一维数组)

  • 函数 c ()创建向量;
  • 函数 length()返回向量长度;
  • 函数 mode()返回向量的数据类型;

x1=c(171,175,152,184,165,172,153,165,182,175,168,169)
length(x1)
[1] 12
mode(x1)
[1] “numeric”

2、创建一个矩阵(二维数组)

(1)合并命令,可以用rbind()按行合并(row bind),cbind()按例合并(col bind)。

x2=x1=c(171,175,152,184,165,172,153,165,182,175,168,169)
rbind(x1,x2)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
x1 171 175 152 184 165 172 153 165 182 175 168 169
x2 171 175 152 184 165 172 153 165 182 175 168 169

(2)生成矩阵用函数matrix()来创建,格式如此下:
matrix(data=NA,nrow= 1,ncol=1,byrow=FALSE,dimnames);
data矩阵必要的元素,nrow行数,ncol例数,byrom是否按行排例元素,dimnames给定行和例的名称

matrix(x1,nrow = 3,ncol = 4)
[,1] [,2] [,3] [,4]
[1,] 171 184 153 175
[2,] 175 165 165 168
[3,] 152 172 182 169
matrix(x1,nrow = 4,ncol = 3)
[,1] [,2] [,3]
[1,] 171 165 182
[2,] 175 172 175
[3,] 152 153 168
[4,] 184 165 169
matrix(x1,nrow = 4,ncol = 3,byrow = T)
[,1] [,2] [,3]
[1,] 171 175 152
[2,] 184 165 172
[3,] 153 165 182
[4,] 175 168 169

(3)矩阵转置
矩阵A的转置用用函数t()或者transpose(),

A=matrix(1:12,nrow = 3,ncol = 4)
A
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
t(A)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
[4,] 10 11 12

(4)矩阵相加减

B=A=matrix(1:12,nrow = 3,ncol = 4)
A+B
[,1] [,2] [,3] [,4]
[1,] 2 8 14 20
[2,] 4 10 16 22
[3,] 6 12 18 24
A-B

相乘用: A%*%B
(6)对角矩阵用函数diag()

A=matrix(1:16,4,4)
diag(A)
[1] 1 6 11 16
diag(diag(A))
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 0 6 0 0
[3,] 0 0 11 0
[4,] 0 0 0 16
diag(3)
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1

(7)矩阵求逆,矩阵求逆可用函数solve(),应用solve(a, b)运算结果是解线性方程组ax = b,若b缺省,则系统默认为单位矩阵,因此可用其进行矩阵求逆,

A=matrix(rnorm(16),4,4)
A
[,1] [,2] [,3] [,4]
[1,] -0.49496350 -1.2398513 -0.65320525 0.7356988
[2,] -0.05733136 -0.0355844 -0.06469889 1.4974569
[3,] 0.44569392 1.5487172 1.06711290 0.2700429
[4,] -0.27835210 0.2188533 -1.03581728 0.6141236
solve(A)
[,1] [,2] [,3] [,4]
[1,] -5.8522715 4.1383112 -4.4300990 -1.13188442
[2,] 0.5955383 -0.7639493 1.0049376 0.70746050
[3,] 1.6154219 -0.8152687 1.3510231 -0.54137042
[4,] -0.1401114 0.7728592 -0.0873573 -0.04991394

rnorm(16) #产生16个服从正态分布的随机数
rnorm(100,3,4) #产生100个均值是3,标准差为4的随机数

*dnorm(x, mean = 0, sd = 1, log = FALSE) 的返回值是正态分布概率密度函数值,比如dnorm(z)则表示:标准正态分布密度函数f(x)在x=z处的函数值。
pnorm(q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) 返回值是正态分布的分布函数值,比如pnorm(z)等价于P[X ≤ z]

qnorm(p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) 的返回值是给定概率p后的下分位点.

rnorm(n, mean = 0, sd = 1) 的返回值是n个正态分布随机数构成的向量。*

(8) 矩阵的特征值与特征向量
矩阵A的谱分解为A=UΛU’,其中Λ是由A的特征值组成的对角矩阵,U的列为A的特征值对应的特征向量,在R中可以用函数eigen()函数得到U和Λ,
eigen (x, symmetric, only.values = FALSE,EISPACK = FALSE)
其中:x为矩阵,symmetric项指定矩阵x是否为对称矩阵,若不指定,系统将自动检测x是否为对称矩阵。

(A=diag(4)+1)
[,1] [,2] [,3] [,4]
[1,] 2 1 1 1
[2,] 1 2 1 1
[3,] 1 1 2 1
[4,] 1 1 1 2

(A.e=eigen(A,symmetric = T)) #求矩阵的特征值和特征向量
eigen() decomposition
$values
[1] 5 1 1 1
$vectors
[,1] [,2] [,3] [,4]
[1,] -0.5 0.8660254 0.0000000 0.0000000
[2,] -0.5 -0.2886751 -0.5773503 -0.5773503
[3,] -0.5 -0.2886751 -0.2113249 0.7886751
[4,] -0.5 -0.2886751 0.7886751 -0.2113249

特征向量矩阵U和特征值矩阵与原矩阵A的关系A = UDU‘

A.e v e c t o r s vectors%*%diag(A.e vectorsvalues)%*%t(A.e$vectors)
[,1] [,2] [,3] [,4]
[1,] 2 1 1 1
[2,] 1 2 1 1
[3,] 1 1 2 1
[4,] 1 1 1 2

 矩阵的维数

在R中很容易得到一个矩阵的维数,函数dim()将返回一个矩阵的维数,nrow()返回行数,ncol()返回列数,例如:

A=matrix(1:12,3,4)
A
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12

nrow(A)
[1] 3
ncol(A)
[1] 4

16 矩阵的行和、列和、行平均与列平均
在R中很容易求得一个矩阵的各行的和、平均数与列的和、平均数,例如:

A
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12

rowSums(A)
[1] 22 26 30
rowMeans(A)
[1] 5.5 6.5 7.5
colSums(A)
[1] 6 15 24 33
colMeans(A)
[1] 2 5 8 11

上述关于矩阵行和列的操作,还可以使用apply()函数实现。

apply (X, MARGIN, FUN, …)

其中:x为矩阵,MARGIN用来指定是对行运算还是对列运算,MARGIN=1表示对行运算,MARGIN=2表示对列运算,FUN用来指定运算函数,。…用来给定FUN中需要的其它的参数,例如:

apply(A,1,sum)
[1] 22 26 30

apply(A,1,mean)
[1] 5.5 6.5 7.5

apply(A,2,sum)
[1] 6 15 24 33

apply(A,2,mean)
[1] 2 5 8 11

apply()函数功能强大,我们可以对矩阵的行或者列进行其它运算,例如:
计算每一列的方差

A=matrix(rnorm(100),20,5)
apply(A,2,var) #‘矩阵按例求方差’
[1] 0.4641787 1.4331070 0.3186012 1.3042711 0.5238485

apply(A,2,function(x,a)x*a,a=2) #矩阵按例求函数结果
[,1] [,2] [,3] [,4]
[1,] 2 8 14 20
[2,] 4 10 16 22
[3,] 6 12 18 24

注意:apply(A,2,function(x,a)xa,a=2)与A2效果相同,此处旨在说明如何应用alpply函数。

总结

x1=c(171,175,159,155,152,158,154,164,168,166,159,164)#创建一个向量
x2=c(57,64,41,38,35,44,41,51,57,49,47,46)
length(x1)#向量的长度
mode(x1)#数据的类型
rbind(x1,x2)#按行合并
cbind(x1,x2)#按列合并
matrix(x1,nrow=3,ncol=4)#利用x1数据创建矩阵
matrix(x1,nrow=4,ncol=3)#创建行数列数发生变化的矩阵
matrix(x1,nrow=4,ncol=3,byrow=T)#创建按照行排列的矩阵
A=matrix(1:12,nrow=3,ncol=4)#创建矩阵
t(A)#求矩阵转置
A=B=matrix(1:12,nrow=3,ncol=4)#创建两个相同的矩阵
A+B#矩阵加法
A-B#矩阵减法
A=matrix(1:12,nrow=3,ncol=4)#创建矩阵
B=matrix(1:12,nrow=4,ncol=3)#创建矩阵
A%*%B#求矩阵的乘积
A=matrix(1:16,nrow=4,ncol=4)#创建行列数相等矩阵
diag(A)#获得矩阵对角线元素
diag(diag(A))#利用对角线元素创建对角矩阵
diag(3)#创建3阶单位矩阵
A=matrix(rnorm(16),4,4)#创建矩阵
A
solve(A)#求矩阵的逆
(A=diag(4)+1) #创建矩阵
A.e=eigen(A,symmetric=T) #求矩阵的特征值与特征向量
A.e$vectors%*%diag(A.e$values)%*%t(A.e$vectors)#特征向量矩阵U和特征值矩阵D与原矩阵A的关系A=UDU'
(A.c=chol(A))#矩阵的Choleskey分解
t(A.c)%*%A.c#Choleskey分解矩阵V与原矩阵A.c的关系A.c=V'V
(A=matrix(1:18,3,6))#创建矩阵
(A.s=svd(A))#矩阵的奇异值分解
A.s$u%*%diag(A.s$d)%*%t(A.s$v)#矩阵的奇异值分解结果与原矩阵A的关系A=UDV'
(A=matrix(1:16,4,4))#创建矩阵
qr(A)#矩阵的QR分解
(A=matrix(1:4,2,2))#创建矩阵
(B=matrix(rep(1,4),2,2))#创建矩阵
kronecker(A,B)#矩阵的kronecker积
A=matrix(1:12,3,4)#创建矩阵
dim(A)#矩阵的维数
nrow(A)#矩阵的行数
ncol(A)#矩阵的列数
rowSums(A)#矩阵按行求和
rowMeans(A)#矩阵按行求均值
colSums(A)#矩阵按列求和
colMeans(A)#矩阵按列求均值
apply(A,1,sum)#矩阵按行求和
apply(A,1,mean)#矩阵按行求均值
apply(A,2,sum)#矩阵按列求和
apply(A,2,mean)#矩阵按列求均值
A=matrix(rnorm(100),20,5)#创建矩阵
apply(A,2,var)#矩阵按列求方差
apply(A,2,function(x,a)x*a,a=2)#矩阵按列求函数结果
(X=data.frame(x1,x2))#产生由X1和X2构建的数据框
(X=data.frame('身高'=x1,'体重'=x2))#赋予数据框新的列标签
(X=read.table("textdata.txt"))#读取名为textdata的txt格式文档
(X=read.table("textdata.txt",header=T))#读取具有列标签的名为textdata的txt格式文档
X=read.csv("textdata.csv")#读取名为textdata的csv格式文档
library(RODBC)#加载RODBC软件包
Rcode<-odbcConnectExcel("Rcode.xls")#读取名为Rcode的Excel工作薄
(data<-sqlFetch(Rcode,"data"))#显示Rcode中名为data表单的数据
(codedata <- sqlFetch(Rcode,"codedata"))#显示Rcode中名为codata表单的数据
hist(x1) #做出身高的直方图
plot(x1,x2) #做出身高和体重的散点图
data=read.table("clipboard",header=T) #将剪切板数据读入数据框data中
head(data)#显示前6组数据
attach(data)#绑定数据
table(年龄)#一维列联表
barplot(table(年龄),col=1:7)#条形图
pie(table(结果))#饼图
table(年龄,性别) #二维列联表
barplot(table(年龄,性别),beside=T,col=1:7)#以性别分组的年龄条图
barplot(table(性别,年龄),beside=T,col=1:2)#以年龄分组的性别条图
ftable(年龄,性别,结果) #以年龄、性别排列的结果频数三维列联表
ftable(性别,年龄,结果)#以性别、年龄排列的结果频数三维列联表
(ft=ftable(性别,结果,年龄))#显示以性别、结果排列的年龄频数三维列联表
rowSums(ft)#求行和
colSums(ft)#求列和
sum(ft)#求总和

数据矩阵及R语言的表示相关推荐

  1. geo读取表达矩阵 RNA-seq R语言部分(表达矩阵合并及id转换)

    geo读取表达矩阵 RNA-seq R语言 方法一:1.从geo页面直接下载表达矩阵,然后通过r读取表达矩阵 2.利用getgeo函数读取表达矩阵 3.利用geo自带的geo2r,调整p值为1,获取探 ...

  2. 《数据科学:R语言实现》——2.7 爬取网络数据

    本节书摘来自华章计算机<数据科学:R语言实现>一书中的第2章,第2.7节,作者 丘祐玮(David Chiu),更多章节内容可以访问云栖社区"华章计算机"公众号查看. ...

  3. 《数据科学:R语言实现》——3.9 排列数据

    本节书摘来自华章计算机<数据科学:R语言实现>一书中的第3章,第3.9节,作者 丘祐玮(David Chiu),更多章节内容可以访问云栖社区"华章计算机"公众号查看. ...

  4. 《数据科学:R语言实现》——3.12 估计缺失数据

    本节书摘来自华章出版社<数据科学:R语言实现>一 书中的第3章,第3.12节,作者:R for Data Science Cookbook 丘祐玮(David Chiu),更多章节内容可以 ...

  5. 《数据科学:R语言实现》——2.5 使用Excel文件

    本节书摘来自华章计算机<数据科学:R语言实现>一书中的第2章,第2.5节,作者 丘祐玮(David Chiu),更多章节内容可以访问云栖社区"华章计算机"公众号查看. ...

  6. 《数据科学:R语言实现》——第1章 R中的函数

    本节书摘来自华章出版社<数据科学:R语言实现>一 书中的第1章,第1.1节,作者:R for Data Science Cookbook 丘祐玮(David Chiu),更多章节内容可以访 ...

  7. 玩转数据可视化之R语言ggplot2:(六)统计变换绘图:包括加权绘图、数据分布图、曲面图、图形重叠处理等

    玩转数据可视化之R语言ggplot2

  8. 数据科学与R语言: 关于我 Rer

    数据科学与R语言: 关于我 Rer 数据科学与R语言: 关于我 关于我 钱钟书曾说,鸡蛋好吃不一定要去认识下蛋的母鸡.不过人类是社会化的动物,访客和博主都希望有多一些的交流.在2012年元旦之即,写下 ...

  9. 数据ETL——使用R语言对身份证进行校验,排序筛选等操作

    数据ETL--使用R语言对身份证进行校验,排序筛选等操作 CSV格式如图所示 1.分别查询:  吉林省的身份证号码(参考GB/T2260-2007标准)  校验码不正确的无效身份证号码  50岁 ...

最新文章

  1. spring获取webapplicationcontext,applicationcontext几种方法详解(转载)
  2. 技术实践 | 网易云信视频转码提速之分片转码
  3. 2019你还没搭建个人博客吗?进来看看
  4. raspberry pi_什么是Raspberry Pi基金会? 售出1000万台计算机
  5. mysql虚拟机授权错误,windows下用navicat链接虚拟机MySQL数据库的过程和问题解决
  6. adobe黑体std能商用_adobe黑体std字体下载
  7. 服务器提取数据库信息,怎样从服务器数据库提取数据库
  8. jquery实现60秒倒计时
  9. puk码怎么查询_手机SIM卡PUK如何查询?怎么找PUK码?
  10. 如何写互联网产品分析报告
  11. fastadmin 文本框修改为图片或文件上传
  12. 查看表空间及增加表空间
  13. 【Tableau 图表大全13】之树状图
  14. 复变函数基本概念总结
  15. 如何把采集到的数据存入mysql_数据采集教程_数据发布_如何发布到数据库MySQL_后羿采集器...
  16. 利用 Google API 调用谷歌地图 演示1
  17. 腾讯云GPU桌面服务器驱动安装
  18. select中like与rlike的用法详解
  19. 线径看板帮助电线电缆厂提高生产效率的工作原理
  20. Linux:安装zsh、oh-my-zsh

热门文章

  1. arc hdmi 接线图_HDMI ARC接口和其他的有什么不同?
  2. 90后小伙发现支付宝漏洞,自己编程两天“赚”百万!
  3. docker镜像下载
  4. WebView使用详解(一)——Native与JS相互调用(附JadX反编译)
  5. 小东吖 之 java Collection集合和迭代器
  6. Java学习路线-43:JDBC数据库开发入门
  7. lottie android 卡顿,说说动画卡顿的解决方案
  8. 记录使用到的正则表达式
  9. Unity 开源示例合集
  10. springboot+vue 后台权限管理系统