本站分享:AI、大数据、数据分析师培训认证考试,包括:Python培训Excel培训Matlab培训SPSS培训SAS培训R语言培训Hadoop培训Amos培训Stata培训Eviews培训

R语言 常用数据结构_R语言培训

r语言 cdadata 3552℃

R语言 常用数据结构

关键词: r语言数据结构 r语言查看数据结构 常用的数据结构

要毕业了,怕毕业后再也没有机会拾起R语言,所以趁早把这些写下来。

一般来讲,R语言中有三种数据结构,第一种是数组,第二种是列表,第三种是数据框

第一种: 数组(包括向量和矩阵)。

数组可以用来储存数值型(numeric)、逻辑型(logical)和字符型(character)三种类型的数据。

例如:

储存字符型数据 
> x = array(rep("a",6),dim=c(2,3))
> x
     [,1] [,2] [,3]
[1,] "a"  "a"  "a" 
[2,] "a"  "a"  "a" 

 储存逻辑型数据
> x = array(rep(T,6),dim=c(2,3))
> x
     [,1] [,2] [,3]
[1,] TRUE TRUE TRUE
[2,] TRUE TRUE TRUE

 储存数值型数据
> x = array(rep(1,6),dim=c(2,3))
> x
     [,1] [,2] [,3]
[1,]    1    1    1
[2,]    1    1    1

在上面的例子中我们可以看到,我们创建这个数组使用的是array函数,在用帮助文档查看array函数时(?array或者help(array)我们可以发现,该函数主要包括3个参数,分别是data、dim和dimnames。

那么以以下例子,我们来看一下这个array函数怎么使用:

> x = array(rpois(6,10),dim=c(2,3),dimnames=list(c("male","female"),c("apple","banana","pear")))
> x
       apple banana pear
male      13      7    8
female     8     12    7

这里,我们使用了rpois来产生了6个符合泊松分布的数字,注:在这里这6个数字是什么不重要,所以我们不讲解为什么要使用rpois,只需要知道这是6个数字。然后dim=c(2,3),这里我们可以看到一个新的函数叫做c(),这个函数实际上是将一些值组合成一个向量,该函数用得非常广泛,但是非常简单,我们这里不详细讲解了。dim=c(2,3)表示这是一个二维数组,第一维的最大下标为2,第二维的最大下标为3。当然,我们的数组不局限于二维,可以是三维或者更多维。 

> x = array(rpois(24,10),dim=c(2,3,4),dimnames=list(c("male","female"),c("apple","banana","pear"),c("Mon","Tue","Wed","Thu")))
> x
, , Mon

       apple banana pear
male      11     12   10
female     9      9    9

, , Tue

       apple banana pear
male       8     15    7
female     3      5   10

, , Wed

       apple banana pear
male       9      9   13
female    12     12    9

, , Thu

       apple banana pear
male      11      5    9
female     9      9    8

上面这个例子是一个三维的数组。我们继续来看这个dimnames。dimnames这个参数是用来指定有关的每一个维度的名字的,其中第一个维度的两行分别为male和female,第二个维度的两个分别为apple、banana和pear。

讲到这里,需要提出来的是,一维数组跟向量很相近,二维数组就是矩阵。但是一维数组跟向量在某些函数的处理过程中会有区别的对待,如str函数:

> x = array(rpois(2,10),dim=c(1,2),dimnames=list(c("apple"),c("male","female")))
> str(x)
 int [1, 1:2] 8 15
 - attr(*, "dimnames")=List of 2
  ..$ : chr "apple"
  ..$ : chr [1:2] "male" "female"
> y = as.vector(x)
> str(y)
 int [1:2] 8 15

那么既然提到了向量和矩阵,那么我们来看看常用的定义向量和矩阵是如何定义的。

矩阵:

vector(mode = "logical", length = 0)
这里,mode参数表示的是该向量储存数据的类型,length表示该向量的长度。

矩阵:

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

这里data是该向量要储存的数据,nrow和ncol,顾名思义是指这个矩阵有多少行和多少列,需要指出的是,data的个数需要等于nrow乘以ncol。byrow表示数据是否以行的方式进行排列,我们会在下面的例子中阐述。dimnames与array中的dimnames一致。

> x = matrix(data=1:6,nrow=2,ncol=3,byrow=T)
> x
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
> x = matrix(data=1:6,nrow=2,ncol=3,byrow=F)
> x
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

在这个例子可以发现,是否按行排列会对数据结构产生很大的影响,所以在使用过程需要特别注意。

第二种:列表。

列表是R语言中使用非常广泛的一种结构,他的主要特点就是不对齐的数据格式。是用list函数进行创建。

例如:

> x = list(fruit=c("apple","banana","pear"),price=c(1,1,1.5),market=c("newabest"))
> x
$fruit
[1] "apple"  "banana" "pear"  

$price
[1] 1.0 1.0 1.5

$market
[1] "newabest"

在这里,我们可以看到,这个列表包含3个槽,第一个是fruit,它储存的是字符型,长度为3。第二个是price,储存的是数值型,长度为3,第三个是market,储存的是字符型,长度为1。也就是说,我们可以在一个列表中储存不同的类型数据,还可以储存不同的长度数据,每一个插槽中都是一个向量(vector)。我们可以直接使用x$fruit来调用数据。

第三种:数据框。

数据框实际上是一种非常实用的数据结构。它实际上是一个表,这个表的列与列之间可以储存不同的数据类型,但是同一列必须是同一种数据结构。如:

> fruit=c("apple","banana","pear")
> price=c(1,1,1.5)
> buy=c(T,F,F)
> x=data.frame(fruit,price,buy)
> x
   fruit price   buy
1  apple   1.0  TRUE
2 banana   1.0 FALSE
3   pear   1.5 FALSE

同样的,我们可以使用x$fruit、x$price和x$buy来调用这三列数据。

转载请注明:数据分析 » R语言 常用数据结构_R语言培训

喜欢 (2)or分享 (0)