R语言——5种数据结构

本文首发于“生信大碗”公众号,转载请注明出处

R语言是数据分析和可视化的软件,数据是起点。这篇文章就来给大家介绍一下R中的5种数据结构——向量、矩阵、数组、数据框、列表。

基本概念

首先,我们需要了解一些基本的概念:

1.数据集:即数据的集合,数据集中的每个数据称为该数据集的元素。

2.数据类型(模式):根据分类方式的不同,可将数据分为不同的类型。如数值型变量、逻辑型变量、字符型变量:


图1  数值型变量(numeric,不加引号的数字)



图2  逻辑型变量(logical,不加引号的TRUE或者FALSE)


图3  字符型变量(character,加引号的各类数据)


注:函数class()查看对象的数据结构

5种数据结构

接下来,我们就来学习一下数据结构。数据结构就是数据的排列方式。R中主要有5种数据结构——向量、矩阵、数组、数据框、列表

图4  R的5种数据结构


概念:

1.向量(vector)、矩阵(matrix)、数组(array)可以放到一起理解,就是同一类型的数据(数值型、逻辑型、字符型)排列成一维、二维、三维的形式。

2.数据框(dataframe)和矩阵一样也是二维结构,区别在于数据框各列的数据类型可以不同,但同一列的数据类型必须一致。

3.列表(list)就更加包容了,它能存放向量、矩阵、数组、数据框甚至其他列表。

创建与提取

通常情况下我们是将外部数据导入R进行处理和分析,很少直接在R中键入数据,所以创建不同数据结构的方法了解即可,从不同数据结构中提取元素的方法才是重点。

1. 向量的创建与提取:

使用函数c(data)创建向量。

使用[ N ](中括号 + 数字)提取向量的第N个元素。

图5  向量的创建与提取


2. 矩阵的创建与提取

使用函数matrix(data=vector,  nrow = 1,  ncol = 1,  byrow = FALSE, dimnames = NULL)创建矩阵:data是用来创建矩阵的数据;nrow、ncol分别指定行数、列数,默认为1;byrow表示是否按行填充,默认为FALSE;dimnames给行列命名,默认为空值NULL。

使用[ i , j ](中括号 + 行、列数)提取矩阵的第i行第j列元素,也可用 [行名,列名] 来提取相应的元素。

图6  矩阵的创建与提取


3. 数组的创建与提取

使用函数array(data = vector, dim = c(dim1,dim2, dim3), dimnames = NULL)创建数组:data是用来创建数组的数据;dim指定各维度的长度;dimnames给各维度命名,默认为空NULL。

可以用使用[ x , y , z ](中括号 + 各维度下标)或者 [各维度名称]来提取相应的元素。

图7  数组的创建与提取


4.数据框的创建与提取

使用函数data.frame(col1 , col2 , col3 , …)创建数据框:col1、col2、col3分别表示数据框的第1、2、3列(注意:各列的长度要相等)。创建时可以直接给每一列指定列名(如图8中红色框),添加参数row.names可以指定行名(如图8中黄色框)


图8  数据框的创建


与矩阵一样,可以使用[ i , j ](中括号 + 行、列数)提取数据框的第i行第j列元素,也可用 [行名,列名] 来提取相应的元素。此外,还可使用美元符号 $列名 提取数据框中某一列的数据。


图9 数据框的提取


5.列表的创建与提取

使用函数list(object1 , object2 , object3 , …)创建数据框:object1、object2、object3分别表示要放进列表里的对象(可以是任一数据结构)。创建时可以直接给每一对象命名(如图10中红色框)。


图10  列表的创建


列表的提取:[ N ]表示提取列表的第N个对象,也可使用  [对象名称] 或美元符号 $对象名称 来提取相应的对象。


图11 列表的提取


需要注意的是使用单个中括号提取出来的对象其数据结构仍然是列表,使用双中括号提取出来的对象才具有是对象本来的数据结构。


图12  单、双中括号提取列表元素的区别


今天的分享就到这里啦,快去在R中实操一下吧~我们下期再见!


本文首发于“生信大碗”公众号,转载请注明出处

—END—

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容