当前位置: 首页 > 数据分析师 > 数据分析师实战技能 > 数据分析师数据分析 > R语言中矩阵、向量在内存上的区别

R语言中矩阵、向量在内存上的区别

发布时间:2020年09月28日 20:02:44 来源: 点击量:474

【摘要】R语言中矩阵、向量在内存上的区别向量在初始创建时,系统就给分配了足够的空间,没有赋值的下标对应的值都用NA代替了,所以向量不存在下标

R语言中矩阵、向量在内存上的区别

向量

在初始创建时,系统就给分配了足够的空间,没有赋值的下标对应的值都用NA代替了,所以向量不存在下标超出的限制比如:

> x
[1] 1 2
> length(x)
[1] 2
> x[100]
[1] NA
> length(x)
[1] 2
> x[100]=3
> length(x)
[1] 100
创建x时给了两个数字,所以长度为2。但是取值x[100]时显示的是NA并非下标越界,当赋值x[100]=3时,x的长度变为了100。

这种性质的好处就是可以取代向量的重新赋值语句比如:

>x<- c(x,2)

可以使用以下语句代替:

>x[length(x)+1]=2
这样的好处就是由于不用重新赋值,不需要重新分配内存,因此可以大大提升程序的效率,比如:

> create_vector2<-function(k)
+ {
+   gh=c()
+   for(i in 1:k){
+     gh=c(gh,i)
+   }
+   return(gh)
+ }
> create_vector1<-function(k)
+ {
+   gh=c()
+   gh[1:k]=1:k
+   return(gh)
+ }
以上为两个创建向量的函数,运行时间测量如下:

> system.time(create_vector1(10000))     #创建10000长度的向量,函数1运行时间
用户 系统 流逝
   0    0    0
> system.time(create_vector2(10000))     #创建10000长度的向量,函数2运行时间
用户 系统 流逝
0.11 0.00 0.11
> system.time(create_vector1(100000))     #创建100000长度的向量,函数1运行时间
用户 系统 流逝
   0    0    0
> system.time(create_vector2(100000))     #创建100000长度的向量,函数1运行时间
 用户  系统  流逝
11.48  0.01 11.71
可以看到函数1明显比函数2快很多。函数1的运行时间基本为0。
矩阵
矩阵并没有这种性质,矩阵的内存空间是初始创建空间的大小。一但确定,只有通过重新赋值来改变。所以会出现下标越界等错误。

分享到: 编辑:wangmin

就业培训申请领取
您的姓名
您的电话
意向课程
点击领取

环球青藤

官方QQ

扫描上方二维码或点击一键加群,免费领取大礼包,加群暗号:青藤。 一键加群

绑定手机号

应《中华人民共和国网络安全法》加强实名认证机制要求,同时为更加全面的体验产品服务,烦请您绑定手机号.

预约成功

本直播为付费学员的直播课节

请您购买课程后再预约

环球青藤移动课堂APP 直播、听课。职达未来!

安卓版

下载

iPhone版

下载
环球青藤官方微信服务平台

刷题看课 APP下载

免费直播 一键购课

代报名等人工服务

课程咨询 学员服务 公众号

扫描关注微信公众号

APP

扫描下载APP

返回顶部