R語言-六大數據結構


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


免責聲明!

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



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