R語言學習——向量,矩陣


 

在R中,基本的數據結構有:向量,矩陣,數組,數據框,列表,因子,函數等。 向量:一系列同類型的有序元素構成。

向量是一維結構。 向量是R最簡單的數據結構,在R中沒有標量。

標量被看成1個元素的向量。 向量元素必須是同類型的。

由於向量是最簡單的數據結構,因此本章中以向量為例子來解釋各個概念。

矩陣:二維的同類型元素的集合。

矩陣由函數matrix創建。 矩陣需要輸入行數,列數。 矩陣是二維的,引用元素可通過雙下標做索引。

矩陣在物理實現時,是向量附加行列數屬性來實現的,因此也可以通過向量的方式引用其元素。

1、結構類型是指在R語言中,自帶的對象的數據結構的類型。主要有 向量、矩陣、數組、數據框、列表等。

2、元素類型是指在一個對象中,其元素所屬類型。主要類型有: 數值型:分為整數型和雙精度型(默認)。 字符型:夾在雙引號或者單引號之間的字符或字符串。 復數型:形如a+bi形式的復數。 邏輯型:只能取TRUE(T)/FALSE(F)。 函數型:函數對象。 RAW:以二進制形式保存的數據。 缺省值:若某值不可得到(not available)或缺少值(missing value),相關位置可被賦NA值;任何NA的運算結果都為NA。

A<-c(2,4,6)

B<-c(“Lee”,”Jack”)

C<-c(TRUE,FALSE)

A是向量,A有三個元素,A的元素是數值型。 B是向量,B有兩個元素,B的元素是字符型。 C是向量,C有兩個元素,C的元素是邏輯型。

R中皆對象。 R中所有的對象都有元素類型和長度屬性,可通過函數typeof()和length()獲取; 數據結構可通過class()獲取。 R對象的長度可以隨時發生改變,常見包括如下情況:

R語言不能通過對某元素賦NULL值的方式,刪除一個元素。

1、除了typeof和length之外,其他class的對象可能還會有其他的屬性,可以通過函數attributes()和attr()進行操作,例如: 函數attributes(object)將給出當前對象所具有的所有非基本屬性(長度和模式屬於基本屬性)的一個列表。 函數attr(object,name)可以被用來選取一個指定的屬性。

R的數組中,元素的排列順序是第一下標變化最快,最后下標變化最慢。這在FORTRAN中叫做“ 按列次序”。 屬性以列表形式保存,其中所有元素都有名字。

2、dim屬性可通過dim()操作:二維或以上的都有dim屬性。

 

1、用下標來訪問對象中的元素:下標個數需與對象維數對應。

R的所有對象都可用一個下標來索引,這樣就把對象看成廣義的“向量”——有順序的一排元素,這個對象是表明在這個序列中元素的序號。

比如上述x雖然是2維的,但是x[2]也可以,表明第二個元素。 下標可以是負值,這表明就不選這個位置的元素。

 

> x = array(6:1,2:3) > x [,1] [,2] [,3] [1,]    6    4    2 [2,]    5    3    1
> x[2]         #按照存儲的順序訪問單個元素
[1] 5
> x[1,2]       #通過多個下標訪問單個元素
[1] 4
> x[1,]        #返回一行
[1] 6 4 2
> x[,1]        #返回一列
[1] 6 5 

2、生成篩選索引:可以用等維的邏輯向量來選取元素。

如果是矩陣,則需要等維度的邏輯矩陣來選取元素。提取出TRUE位置的元素。結果返回的是一個向量。 若篩選矩陣中有NA值,則此位置處的提取值為NA.

3、若對象有names屬性,還可通過names所含的字符串來索引。

若對象是list 或者 data frame類型的,可以用$連接names屬性值,來引用對應分量。

注意:向量、矩陣和數組不可通過$來引用。

 

1、向量 向量是R中最簡單的數據結構,其是一系列有序同類型元素的集合。 向量是一維的

2、向量的創建 向量可以用c()函數創建,其元素用逗號分隔,放在c()的參數列表中。 用rep(x,y)函數創建。 用冒號運算符(:)創建向量。 用seq()函數創建向量 by參數需與from to參數匹配 by可以是小數 隨機數向量的生成(后面)

向量: 隨機數的生成

4、向量的運算 普通運算符+-*/都是元素與元素相+-*/。 循環補齊規則:在對兩個向量使用運算符時,若要求這兩個向量具有相同的長度,R會自動循環補齊,即重復較短的向量,直到它與另一個向量長度相匹配。 一些函數 all()/any(): 參數中是否“all為TRUE/any為TRUE”。 強篩選函數subset() : 剔除NA值。

函數which():返回向量中元素為TRUE的序列號。

 

1、矩陣:二維相同類型的元素的組合。 2、矩陣的創建 matrix()函數

標准創建matrix的方法。

可以省略不必要的參數。

可以創建NA矩陣。

3、元素的引用: 下標索引 邏輯向量篩選 名字索引——字符串索引

[注] 向量、矩陣和數組不可用$來引用對象。

4、矩陣的運算 線性代數運算:%*% apply():對矩陣的行(或列)調用函數的函數 apply(m,dimcode,f,fargs) m是目標矩陣 dimcode是維度編號:沿着此維度提取出對象的分量,然后對各分量應用對應的函數。 1代表對每一行應用函數,2代表對每一列應用函數。 f是應用在行或列上的函數。 fargs是f的可選參數集

apply每一次對行或列運用函數f()時得到的結果是列矩陣

矩陣的融合: 按行融合兩個矩陣:rbind() 按列融合兩個矩陣:cbind()

 

 


免責聲明!

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



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