数据价值-DataValues

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 302|回复: 0

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

[复制链接]

1万

主题

1万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
39029
发表于 2017-1-4 13:18:57 | 显示全部楼层 |阅读模式
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语言培训
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|DataValues ( 赣ICP备16006919号 ) DataValues

GMT+8, 2019-8-24 04:02 , Processed in 0.143922 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表