本文首發(fā)于“生信大碗”公眾號檬某,轉載請注明出處
R語言是數(shù)據(jù)分析和可視化的軟件撬腾,數(shù)據(jù)是起點。這篇文章就來給大家介紹一下R中的5種數(shù)據(jù)結構——向量恢恼、矩陣民傻、數(shù)組、數(shù)據(jù)框场斑、列表漓踢。
基本概念
首先,我們需要了解一些基本的概念:
1.數(shù)據(jù)集:即數(shù)據(jù)的集合漏隐,數(shù)據(jù)集中的每個數(shù)據(jù)稱為該數(shù)據(jù)集的元素喧半。
2.數(shù)據(jù)類型(模式):根據(jù)分類方式的不同,可將數(shù)據(jù)分為不同的類型青责。如數(shù)值型變量薯酝、邏輯型變量、字符型變量:
注:函數(shù)class()查看對象的數(shù)據(jù)結構
5種數(shù)據(jù)結構
接下來浩村,我們就來學習一下數(shù)據(jù)結構做葵。數(shù)據(jù)結構就是數(shù)據(jù)的排列方式。R中主要有5種數(shù)據(jù)結構——向量心墅、矩陣酿矢、數(shù)組榨乎、數(shù)據(jù)框、列表瘫筐。
概念:
1.向量(vector)蜜暑、矩陣(matrix)、數(shù)組(array)可以放到一起理解策肝,就是同一類型的數(shù)據(jù)(數(shù)值型肛捍、邏輯型、字符型)排列成一維之众、二維拙毫、三維的形式。
2.數(shù)據(jù)框(dataframe)和矩陣一樣也是二維結構棺禾,區(qū)別在于數(shù)據(jù)框各列的數(shù)據(jù)類型可以不同缀蹄,但同一列的數(shù)據(jù)類型必須一致。
3.列表(list)就更加包容了膘婶,它能存放向量缺前、矩陣、數(shù)組悬襟、數(shù)據(jù)框甚至其他列表衅码。
創(chuàng)建與提取
通常情況下我們是將外部數(shù)據(jù)導入R進行處理和分析,很少直接在R中鍵入數(shù)據(jù)古胆,所以創(chuàng)建不同數(shù)據(jù)結構的方法了解即可肆良,從不同數(shù)據(jù)結構中提取元素的方法才是重點筛璧。
1. 向量的創(chuàng)建與提纫菀铩:
使用函數(shù)c(data)創(chuàng)建向量。
使用[ N ](中括號?+?數(shù)字)提取向量的第N個元素夭谤。
2. 矩陣的創(chuàng)建與提取
使用函數(shù)matrix(data=vector,??nrow = 1,??ncol = 1,??byrow = FALSE,?dimnames = NULL)創(chuàng)建矩陣:data是用來創(chuàng)建矩陣的數(shù)據(jù)棺牧;nrow、ncol分別指定行數(shù)朗儒、列數(shù)颊乘,默認為1;byrow表示是否按行填充醉锄,默認為FALSE乏悄;dimnames給行列命名,默認為空值NULL恳不。
使用[ i?,?j?](中括號?+?行檩小、列數(shù))提取矩陣的第i行第j列元素,也可用?[行名烟勋,列名]?來提取相應的元素规求。
3. 數(shù)組的創(chuàng)建與提取
使用函數(shù)array(data =?vector, dim =?c(dim1,dim2, dim3),?dimnames = NULL)創(chuàng)建數(shù)組:data是用來創(chuàng)建數(shù)組的數(shù)據(jù)筐付;dim指定各維度的長度;dimnames給各維度命名阻肿,默認為空NULL瓦戚。
可以用使用[ x , y , z ](中括號?+?各維度下標)或者?[各維度名稱]來提取相應的元素。
4.數(shù)據(jù)框的創(chuàng)建與提取
使用函數(shù)data.frame(col1 , col2 , col3 ,?…)創(chuàng)建數(shù)據(jù)框:col1丛塌、col2较解、col3分別表示數(shù)據(jù)框的第1、2姨伤、3列(注意:各列的長度要相等)哨坪。創(chuàng)建時可以直接給每一列指定列名(如圖8中紅色框),添加參數(shù)row.names可以指定行名(如圖8中黃色框)
與矩陣一樣乍楚,可以使用[ i?,?j?](中括號?+?行当编、列數(shù))提取數(shù)據(jù)框的第i行第j列元素,也可用?[行名徒溪,列名]?來提取相應的元素忿偷。此外,還可使用美元符號?$列名 提取數(shù)據(jù)框中某一列的數(shù)據(jù)臊泌。
5.列表的創(chuàng)建與提取
使用函數(shù)list(object1 , object2 , object3 ,?…)創(chuàng)建數(shù)據(jù)框:object1鲤桥、object2、object3分別表示要放進列表里的對象(可以是任一數(shù)據(jù)結構)渠概。創(chuàng)建時可以直接給每一對象命名(如圖10中紅色框)茶凳。
列表的提取:[ N ]表示提取列表的第N個對象播揪,也可使用 ?[對象名稱]?或美元符號?$對象名稱 來提取相應的對象贮喧。
需要注意的是使用單個中括號提取出來的對象其數(shù)據(jù)結構仍然是列表,使用雙中括號提取出來的對象才具有是對象本來的數(shù)據(jù)結構猪狈。
今天的分享就到這里啦,快去在R中實操一下吧~我們下期再見雇庙!
本文首發(fā)于“生信大碗”公眾號谓形,轉載請注明出處
—END—