大家好,承接第1天的內(nèi)容,今天我們介紹R語言的數(shù)據(jù)結構。 作為開場白,我本該說:無論我們是用R作圖還是進行統(tǒng)計分析,首先是要輸入我們的數(shù)據(jù),由于R中不同(作圖)函數(shù)或參數(shù)只接受特定的數(shù)據(jù)結構,如果輸入的數(shù)據(jù)結構不對,R就會報錯,我們也就無法作圖或繼續(xù)后續(xù)分析,因此數(shù)據(jù)的準備是數(shù)據(jù)分析以及作圖的重要前提,同時,了解R的數(shù)據(jù)結構,也十分有助于我們了解R的工作方式。 而我想說的是:這一部分確實比較讓人頭疼,小爺我剛入門的時候,看了好幾遍都不知道它講的是什么鬼(不過我從小到大一直都覺得自己是只笨鳥),尤其那什么列表啊,因子啊,看后唯一的收獲是認識了它的中英文。現(xiàn)在回過頭來看,我覺著吧,對于這一部分,不用急著一下子掌握,過上兩遍,了解一下它們是怎么創(chuàng)建的,怎么訪問其中的元素以及會用簡單的函數(shù)就很好了。在以后的腳本中,你會反復看到這些數(shù)據(jù)結構的身影,那時再反過來學習,想不掌握都不可能。狠心透露一個小爺我學語言的獨門秘籍:看腳本,模仿,做項目。 現(xiàn)在,讓我們正式開始“走馬觀花”吧 首先,了解下R中常見的數(shù)據(jù)類型,大學學過點計算機的應該很容易理解,包括數(shù)值型(numeric)、字符型(character)、邏輯型(logical) 其次是“對象(object)”的概念,R采用面向對象的編程風格,其實不必糾結于對象是什么,但是要知道什么是對象,這很重要。在R中,一個數(shù)字,一個向量,一個函數(shù)的計算結果都是對象。所有的對象都有兩個內(nèi)在屬性:類型和長度,二者可以通過mode()和length()得到。順便提一句,R是區(qū)分大小寫的,X和x表示的是不同的對象。 那么又一重要概念來了,R語言的6中數(shù)據(jù)結構:向量(vector)、矩陣(matrix)、數(shù)組(array)、數(shù)據(jù)框(data frame)、因子(factor)以及列表(list)。 向量 向量是用于存儲數(shù)值型、字符型、邏輯型數(shù)據(jù)的一維數(shù)組,常用函數(shù)c()可用來創(chuàng)建向量, 利用[*]下標取向量中的某個元素,第一個元素的下標為1(區(qū)別于perl、python等語言第一元素的下標或者說索引為0)。
矩陣 學過線性代數(shù)的各位,對這個概念應該比較熟悉,矩陣是一個二維數(shù)組,每個元素擁有相同的數(shù)據(jù)類型(數(shù)值型、字符型、邏輯型)。功能函數(shù)matrix()可以用于創(chuàng)建矩陣。
ginv() :求逆 diag(): 提出對角線 det():計算代數(shù)和 數(shù)組 與矩陣類似,但數(shù)組的維度可以大于2,相當于矩陣的延伸,不如矩陣的使用頻率高。數(shù)組可以通過array()函數(shù)來創(chuàng)建:
數(shù)據(jù)框很常用,不同于矩陣,同一數(shù)據(jù)框內(nèi)可包含不同類型的數(shù)據(jù)??赏ㄟ^data.frame將若干向量組成數(shù)據(jù)框,但向量必須有相同的長度或長度有倍數(shù)關系,如果其中有一個比其它的短,它將按循環(huán)法則“循環(huán)”整數(shù)次。
名義型變量和有序型變量在R中稱為因子,可以使用factor或gl創(chuàng)建因子。 因子的種類稱為水平(level),上面的sample因子有兩個水平:Case和Control。假設expression為某個基因的表達量,通過tapply函數(shù)結合sample這個因子即可計算腫瘤和正常樣本中這個基因的平均表達量。 列表 列表允許整合若干(可能無關的)對象到單個對象名下,其對象可以是目前講到的任何結構(向量、矩陣、數(shù)據(jù)框等),功能函數(shù)list()可用于創(chuàng)建列表
That’s all. Thank you!
|
|