熱線電話:13121318867

登錄
首頁精彩閱讀R語言中矩陣、向量在內存上的區別
R語言中矩陣、向量在內存上的區別
2018-03-13
收藏

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。
矩陣
矩陣并沒有這種性質,矩陣的內存空間是初始創建空間的大小。一但確定,只有通過重新賦值來改變。所以會出現下標越界等錯誤。


數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢