R語言數組部分的筆記


       要建立一個數組,首先需要一個維數向量dim來描述其維數屬性. dim 是由一個或多個非負整數組成的向量,所有非負整數的乘積等於數組的長度。一個向量只有定義其維數以后才能成為一個數組,例如:

x<-c(1:10)
is.array(x)#檢驗x是不是數組
is.vector(x)#查看其是不是一個向量
dim(x)<-8#定義誰數后成為數組
dim(x)<-10#定義誰數后成為數組,且長度要與向量長度一樣
is.array(x)#檢驗x是不是數組

  結果:

 

 

 注意:若dim(x)<-8,這個所賦的值已經小於向量的長度,系統會報錯為下所示

Error in dim(x) <- 8 :
dims [product 8] do not match the length of object [10]

dim(x)#查看x的數組長度

  

 矩陣的建立:

       由於矩陣具有特殊性,R語言中往往利用函數matrix()建立矩陣,利用函數diag()建立對角矩陣.函數matrix()的調用格式為:

matrix(data=NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames= NULL)

       其中,data 為給定的數據向量;nrow為矩陣的行數;ncol為矩陣的列數;;byrow 為邏輯參數,默認狀態為FALSE,即按列填充數據; dimnames 為矩陣維數的名稱,默認時為空。例如

mat<-matrix(1:12,nrow=4,ncol=3,byrow=T);mat

  

diag(4)#創建一個4階的單位矩陣

 

z<-c(1,2,3,4)#創建一個主對角線上的元素為z向量上的這些元素的矩陣
diag(z)#創建矩陣

  

mat[2,3]#查看矩陣第二行第三列的元素
diag(z)[,3]#查看矩陣z的第三列元素
diag(z)[1,]#查看矩陣z的第一行上的元素
diag(z)[-1,]#去除矩陣z的第一行元素
mat[1,3]<-99;mat#替換第一行第三列位置上的元素

  

mat[1+1,]#第一行元素+1

  

 t(mat)#轉置

 

mat1<-cbind(mat,x);mat1#按列合並矩陣
mat2<-rbind(mat,x);mat2#按行合並矩陣

  

diag(mat2)#查看矩陣主對角線上的元素

  

 d<-matrix(c(1,3,6,9),nrow=2,ncol=2);d#建一個方陣

  

det(d)#計算方陣的行列式值

  

 

 矩陣的代數乘積:矩陣A和B的代數乘積A%*%B只有在A的列數與矩陣B的行數相同的條件下才能夠進行運算.。

矩陣A和B的交叉乘積:

矩陣(向量)的外積

 

 線性方程組的求解

 

 

 矩陣的特征值與特征向量

 

 矩陣的奇異值分解

d1<-matrix(1:12,nrow =3,ncol=4,byrow=T);d1#創建矩陣
mat2%*%d1#兩個矩陣的乘積
x1<-matrix(c(1,6,8,9),nrow=2,ncol=2,byrow=T);x1#創建矩陣
x2<-matrix(c(3,5,9,4),nrow=2,ncol=2,byrow=T);x2#創建矩陣
crossprod(x1,x2)#內積
x<-1:4;x
y<-1:3;y
outer(x,y,"+")#外積
outer(x,y)#外積
x3<-matrix(c(1,5,3,4),nrow=2,ncol=2,byrow=T);x3#矩陣
X<-solve(x2,x3);X#求出X的值
solve(x2)#由於矩陣x2可逆,則命令solve(x2)返回矩陣x2的逆矩陣

x2%*%solve(x2)#證明solve(x2)是x2的逆矩陣

sv<-eigen(x2);sv#特征值與特征向量
a1<-matrix(c(-1,2,3,1,0,3,-2,1,4,0,3,2),nrow=3,ncol=4,byrow=T);a1 b1<-matrix(c(4,3,2,-1,5,-3,0,1,1,2,-5,0),nrow=3,ncol=4,byrow=T);b1 3*a1-2*b1#3a1-2b1的值 A<-matrix(c(3,-1,2,0,1,5,7,9,2,4,6,8),nrow=3,ncol = 4,byrow = T);A B<-matrix(c(7,5,-2,4,5,1,9,7,3,2,-1,6),nrow=3,ncol=4,byrow=T);B x<-((B-A)/2);x#求解A-2X=B的值 C<-matrix(1:12,nrow=3,ncol=4,byrow=T);C svd(C)#求出其的奇異值 

 

 

  

 

         函數max(、min()、median(、 sumO、mean(、 sd0分別返回矩陣所有元素的最大值、最小值、中位數、和、均值以及標准差; var(A)返 回矩陣A的各列的協方差陣; cov(A,B)和cor(A,B)分別返回矩陣A和矩陣B的各列的協方差陣和相關系數陣,由定義cov(a,a)=var(a)。

 

     函數cumsum(、cumprod0、 cummax(、 cummin0分別返回矩陣的(按列)累積求和、累積乘積、累積最大值以及累積最小值向量。

 

 

       函數max(、min(、 median(、sum()、mean(、 sd0只針對矩陣所有元素計算,若針對每一行或每一列進行 上述計算,可以利用命令apply0),其調用格式為:

                apply(X, MARGIN, FUN)

       其中,X為矩陣或數組; FUN為上述函數;當X為矩陣時,參數MARGIN=1,表示按行計算,MARGIN=2,表示按列計算,當X為三維數組時,MARGIN=c(1, 2)表示按行列進行等,另外,函數dim()、 nrow()以及ncol()可以分別得到矩陣的維數、行數和列數,rownames()、colnames()給矩陣分別添加行名和列名; dimnames()返回矩陣的行名和列名。

 

 

 

 

 

 

 

 


.

 



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM