1、向量
向量是R語言中最基本的數據類型,在R語言中沒有單獨的變量。
(1) 創建向量
R語言中可以用 = 或者 <- 來賦值。
向量名 <- 向量
或 向量名 = 向量
向量的創建方式有c()函數,seq()函數等。
注:R中的向量默認為列向量,如果要得到行向量需要對其進行轉置。
(2) 引用
待引用向量為:test = c(6,7,8,9,10)。
a、用下標引用
向量名[下標值]
或 向量名[下標值1:下標值2] (下標值1至下標值2的所有數值)
注:R語言下標值從1開始。
另外,可以在下標值前加 – 表示排除這個下標。
向量名[-下標值]
b、用邏輯引用
向量名[邏輯關系]
其中邏輯關系表示的是一個布爾值構成的向量,用邏輯引用時只會選擇答案為TRUE的值。
(3) 合並向量
c()可以合並向量。
(4) 循環補齊
當兩個向量進行操作時,若其中一個向量比另一個向量長度短,那么該向量會復制自己直到與另一個向量一樣長。(注:長向量長度是短向量長度的整數倍)
其中test1自動變成了(1,2,3,1,2,3)再與test2相加。(test1,test2變量值並未發生改變)
2、矩陣
矩陣從本質上講,是多維的向量。
(1) 創建矩陣
最簡單的直接創建矩陣的方法是用matrix()函數。
其中,data參數輸入的為矩陣的元素,不能為空;nrow參數輸入的是矩陣的行數,默認為1;ncol參數輸入的是矩陣的列數,默認為1;byrow參數控制矩陣元素的排列方式,TRUE表示按行排列,FALSE表示按列排列,默認為FALSE;dimnames參數輸入矩陣的行名和列名,可以不輸入,系統默認為NULL。
還可用其他格式的數據轉變為矩陣,需要用到函數as.matrix()。
(2) 引用矩陣
與向量相似,可用下標來引用矩陣。
矩陣名[行下標,列下標]
(3) 線性代數
a、對應元素相乘
b、矩陣相乘
c、矩陣的轉置t()
d、矩陣的逆solve()
3、數組
數組(array)與矩陣類似,但是維度可以大於2。數組可通過array函數創建,形式如下:
其中vector包含了數組中的數據,dimensions是一個數值型向量,給出了各個維度下標的最大值,而dimnames是可選的、各維度名稱標簽的列表。
4、數據框
數據框是R語言里中的一種數據結構,類似於矩陣,不過與矩陣不同的是其內部可以有多種數據類型,每一列是一個變量,每行是一個觀測記錄。
(1) 創建數據框
使用data.frame()函數就可以初始化一個數據框。
矩陣可以轉化為數據框,如果原來有列名,那么列名將被改作為數據框的變量名,如果沒有列名,那系統會自動為矩陣的各列起一個變量名,如:V1,V2,V3...
列表數據可以轉成數據框。
另外也可以使用read.table() read.csv()讀取一個文本文件,返回的也是一個Data Frame對象。讀取數據庫也是返回Data Frame對象。
(2) 引用數據框
待引用數據框為
a、用下標引用
b、用列表名引用
(3) 常用操作
a、添加變量(列)
b、修改變量(列)
c、刪除觀測值或變量(行或列)
數據框名[-下標值,]
數據框名[,-下標值]
(4) 常用函數
a、names()函數
可獲取列名。
b、rownames()、colnames()函數
可修改行名及列名。
c、attach()函數
可以把數據框中的變量“連接”到內存中,這樣便於數據框數據的調用。
5、列表
列表是一種特別的對象集合,它的元素也由序號(下標)區分,但是各元素的類型可以是任意對象,不同元素不必是同一類型。元素本身允許是其它復雜數據類型,比如,列表的一個元素也允許是列表。
(1) 創建列表
使用list()函數就可以初始化一個列表。
(2) 引用列表
待引用列表即為上圖所創建的列表。
列表名[[下標]
注:列表不同於向量,我們每次只能引用一個元素,如mylist[[1:2]]的用法是不允許的。“列表名[下標]”或“列表名[下標范圍]”的用法也是合法的,但其意義與用兩重括號的記法完全不同,兩重記號取出列表的一個元素,結果與該元素類型相同,如果使用一重括號,則結果是列表的一個子列表(結果類型仍為列表)。
在定義列表時如果指定了元素的名字(如mylist中的name,age,score),則引用列表元素還可以用它的名字作為下標,格式為“列表名[["元素名"]]”。
列表名$元素名
(3) 常用操作
a、添加元素
如果被賦值的元素原來不存在,則列表延伸以包含該新元素。例如,mylist現在共有三個元素,我們定義一個新的命名元素,則列表長度變為4,再定義第六號元素則列表長度變為6:
第五號元素因為沒有定義所有其值是“NULL”,這是空對象的記號。如果rec是一個向量 ,則其空元素為“NA”。
b、修改元素
c、刪除元素
d、合並列表
可以用list()函數進行列表合並。
list(列表1,列表2,···,列表n)