R語言有六種基本的數據結構(或者說數據類型吧)。根據數據的維度和同質/異質可分為5種數據類型,最后再介紹一種特殊的類型“因子”。
同質 | 異質 | |
1維 | 原子向量 | 列表 |
2維 | 矩陣 | 數據框 |
n維 | 數組 |
對於各種類型的具體操作,本文不展開講。本文僅介紹它們各自的一些生成方式。
(1)原子向量
一個有趣的事情:R中最小的單位並不是“數”,而是“向量”。
例如:
> n=5 > is.vector(n) #判斷n的數據類型是否為向量 [1] TRUE
對於生成一個向量,我們可以有多種方式:
> 1:6 [1] 1 2 3 4 5 6 > 8:3 [1] 8 7 6 5 4 3 > seq(2,9,by=3) [1] 2 5 8 > c(9,4,5) [1] 9 4 5
(2)列表
列表可以包含數字、字符串、向量,甚至是列表、矩陣、函數。由list()創建。
> a=list(1,c(5,2,3),'sfd',T,list(1,3)) > a [[1]] [1] 1 [[2]] [1] 5 2 3 [[3]] [1] "sfd" [[4]] [1] TRUE [[5]] [[5]][[1]] [1] 1 [[5]][[2]] [1] 3
(3)矩陣
二維。由matrix()創建。
> a=matrix(seq(0,10,by=0.9),nrow=4,byrow=TRUE) #行數為4;按行輸入(缺省按列輸入) > a [,1] [,2] [,3] [1,] 0.0 0.9 1.8 [2,] 2.7 3.6 4.5 [3,] 5.4 6.3 7.2 [4,] 8.1 9.0 9.9
(4)數據框
數據幀(Data Frame,有人也叫數據框)也是二維結構,其中每一列包含一個變量的所有值。
數據幀的性質:
- 行名稱唯一。
- 列名稱非空。
- 存儲在數據幀中的數據可以是數字,因子或字符類型。
- 每列應包含相同數量的數據項。(保證其為二維結構)
生成數據幀由data.frame()創建。
> a=data.frame(name=c('Mike','Jane','King','Tom'),height=c(160,155,166,159),weight=c(65,48,55,53)) > a name height weight 1 Mike 160 65 2 Jane 155 48 3 King 166 55 4 Tom 159 53
(5)數組
數組可以是多維的。由函數array()創建。
> a=array(c(1,4,5,6,7),dim=c(4,3,2)) > a , , 1 [,1] [,2] [,3] [1,] 1 7 6 [2,] 4 1 7 [3,] 5 4 1 [4,] 6 5 4 , , 2 [,1] [,2] [,3] [1,] 5 4 1 [2,] 6 5 4 [3,] 7 6 5 [4,] 1 7 6
(6)因子
因子是用於對數據進行分類並將其存儲為級別的數據對象。 它們可以存儲字符串和整數。 它們在具有有限數量的唯一值的列中很有用。 像“男性”,“女性”和True,False等。它們在統計建模的數據分析中很有用。
使用factor()函數通過將向量作為輸入創建因子。
> a=c(T,F,F,T,T,T,F) > a [1] TRUE FALSE FALSE TRUE TRUE TRUE FALSE > factor(a) [1] TRUE FALSE FALSE TRUE TRUE TRUE FALSE Levels: FALSE TRUE
也可由數據幀創建因子:
> a=data.frame(name=c('Mike','Jane','King','Tom'),height=c(160,155,166,159),weight=c(65,48,55,53)) > a name height weight 1 Mike 160 65 2 Jane 155 48 3 King 166 55 4 Tom 159 53 > a$name [1] Mike Jane King Tom Levels: Jane King Mike Tom
參考資料:
1.《高級R語言編程指南》哈德利·威克漢姆(Hadley Wickham)著
2. https://www.w3cschool.cn/r/ R語言教程_w3cscool