<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          附代碼 |詳解R語(yǔ)言的高級(jí)數(shù)據(jù)結(jié)構(gòu)

          共 2765字,需瀏覽 6分鐘

           ·

          2020-08-18 11:29

          (給機(jī)器學(xué)習(xí)算法與Python實(shí)戰(zhàn)加星標(biāo),提升AI技能)

          有時(shí)數(shù)據(jù)需要比向量更復(fù)雜的存儲(chǔ)方式。幸運(yùn)的是,R軟件提供了很多的數(shù)據(jù)結(jié)構(gòu)。常見(jiàn)的有數(shù)據(jù)框data.frame)、矩陣matrix)、列表list)以及數(shù)array)。數(shù)據(jù)框類似于電子表格,矩陣類似于人們熟悉的矩陣數(shù)學(xué)計(jì)算,列表對(duì)于程序員比較熟悉。

          ?

          01
          數(shù)據(jù)框


          數(shù)據(jù)框是R語(yǔ)言中最有用的功能之一,它也是R語(yǔ)言的易用性經(jīng)常被提及的原因之一。直觀上,數(shù)據(jù)框就像Excel電子表格一樣有列和行。在統(tǒng)計(jì)上,每列代表一個(gè)變量,每行代表一個(gè)觀測(cè)。

          ?

          在數(shù)據(jù)框中,每列實(shí)際是個(gè)向量,都有相同的長(zhǎng)度。數(shù)據(jù)框可以用來(lái)保存不同數(shù)據(jù)類型的數(shù)據(jù)。這也暗示著,每列的每個(gè)元素必須是相同數(shù)據(jù)類型的,類似向量的要求。創(chuàng)建數(shù)據(jù)框有很多種方式,最簡(jiǎn)單的是用data.frame函數(shù)。這里用前面介紹過(guò)的向量x、y、q創(chuàng)建一個(gè)基本的數(shù)據(jù)框。



          這里創(chuàng)建了一個(gè)由3個(gè)向量組成的103列的數(shù)據(jù)框。注意theDF的名字也是變量。實(shí)際上,可以在創(chuàng)建數(shù)據(jù)框的過(guò)程中設(shè)置變量名字。



          數(shù)據(jù)框是具有很多屬性的復(fù)雜對(duì)象。最常檢查的屬性是行數(shù)和列數(shù),用nrowncol函數(shù)分別得到數(shù)據(jù)框的行數(shù)和列數(shù),而dim函數(shù)可以同時(shí)得到數(shù)據(jù)框的行數(shù)和列數(shù)。

          ?


          數(shù)據(jù)框的列名字用names函數(shù)獲取。names函數(shù)返回一個(gè)字符向量,列出所有的列名。由于是向量,可以訪問(wèn)它的每一個(gè)元素。

          ?


          也可以獲取和指定數(shù)據(jù)框的行名字。

          ?


          有時(shí)一個(gè)數(shù)據(jù)框有太多的行,以至于不能在屏幕上全部顯示出來(lái),這時(shí),可以用head函數(shù)顯示出前幾行。


          像其他變量一樣,用class函數(shù)獲取數(shù)據(jù)框所屬的類。

          ?


          列表框的每列是獨(dú)立的向量,因此,每列都有它自己的類,可以單獨(dú)被訪問(wèn)。R語(yǔ)言有多種方法來(lái)訪問(wèn)每個(gè)列,比如操作符方括號(hào)。theDF$Sport得到theDF的第三列,這說(shuō)明允許通過(guò)列名來(lái)指定特定的列。


          與向量相似,數(shù)據(jù)框允許使用方括號(hào)通過(guò)位置訪問(wèn)單個(gè)元素,但是要用兩個(gè)位置指定,而不是向量中的一個(gè)位置。第一個(gè)是行數(shù),第二個(gè)是列數(shù)。用theDF[3,2]可以得到theDF的位于第三行第二列的元素。

          ?


          可以用向量來(lái)索引更多的行或者列。


          通過(guò)指定行而不指定任何列可以訪問(wèn)一整行。同樣,可以指定列而不指定任何行來(lái)訪問(wèn)一整列。

          ?



          將列參數(shù)指定為字符向量可以以列名訪問(wèn)多列。




          訪問(wèn)指定列的另外一種方式是把列的名字(索引數(shù))作為方括號(hào)里的第二個(gè)參數(shù),或者作為單方括號(hào)或雙方括號(hào)里的唯一參數(shù)。

          ?


          這些方法的輸出不盡相同。有些返回一個(gè)向量,有些返回一個(gè)單列的數(shù)據(jù)框。為了確保輸出單列的數(shù)據(jù)框,使用單方括號(hào),同時(shí)指定第三個(gè)參數(shù):drop=FALSE。通過(guò)列索引數(shù)指定某列也同樣適用。

          ?

          factor的特殊存儲(chǔ)形式也可以表示成數(shù)據(jù)框的形式,為此用model.matrix創(chuàng)建一個(gè)指示變量(或啞變量)的集合。列代表factor的水平值,每行里,對(duì)應(yīng)水平值的那行為1,其他為0。

          ?


          ?

          ?

          02
          列表


          R語(yǔ)言的列表是一個(gè)容器,可以存儲(chǔ)相同類型或者不同類型的數(shù)據(jù)。列表可以存儲(chǔ)任意數(shù)量、任意類型的對(duì)象。列表可以全部包含數(shù)值型或者字符型數(shù)據(jù),也可以包含兩種數(shù)據(jù)類型的混合,以及數(shù)據(jù)框或者其他列表。


          列表用list函數(shù)創(chuàng)建,函數(shù)的參數(shù)即為列表的元素。

          ?


          注意,前面創(chuàng)建列表list3的代碼塊被括號(hào)整個(gè)括起來(lái),使得執(zhí)行的結(jié)果被打印出來(lái)。


          像數(shù)據(jù)框一樣,列表也可以有名字。列表中每個(gè)元素都有唯一的名字,可以使用names函數(shù)查看或設(shè)置名字。

          ?

          ?

          列表元素的名字也可以在創(chuàng)建的過(guò)程中用名字-值成對(duì)指定。

          ?


          令人驚奇的是,可以用vector創(chuàng)建指定長(zhǎng)度的空列表。


          ?

          雙方括號(hào),通過(guò)設(shè)定元素編號(hào)元素名字,可以訪問(wèn)列表的單個(gè)元素。注意這種方式一次只能訪問(wèn)一個(gè)元素。

          ?


          如果實(shí)際使用的元素在一個(gè)被訪問(wèn)的元素中,可以通過(guò)元素的嵌套索引來(lái)訪問(wèn)。


          使用索引(數(shù)字或名字)可以對(duì)列表增加元素,前提是該索引事先不存在列表中。

          ?


          偶爾對(duì)列表或向量或數(shù)據(jù)框增加元素都還好,但是,如果反復(fù)這樣做計(jì)算代價(jià)就太高了。所以最好創(chuàng)建指定長(zhǎng)度的列表,然后通過(guò)合適的索引增加元素。

          ?


          03
          矩陣


          對(duì)統(tǒng)計(jì)非常重要的數(shù)學(xué)結(jié)構(gòu)是矩陣。矩陣跟數(shù)據(jù)框有點(diǎn)相似,是一個(gè)矩形結(jié)構(gòu),具有行和列,每列的數(shù)據(jù)類型相同,每個(gè)元素的數(shù)據(jù)類型也相同一般都是數(shù)值型。矩陣跟向量相似,也可以進(jìn)行元素與元素的加法、減法、乘法、除法、等式運(yùn)算。nrow、ncoldim函數(shù)的使用方法與數(shù)據(jù)框的類似。

          ?

          ?

          矩陣乘法是常用的數(shù)學(xué)運(yùn)算,要求左邊矩陣的列數(shù)等于右邊矩陣的行數(shù)。矩陣A和B都是5×2矩陣,所以為了能讓矩陣B放在右邊進(jìn)行矩陣乘法運(yùn)算,需要對(duì)矩陣B轉(zhuǎn)置。

          ?


          另外一個(gè)跟數(shù)據(jù)框相似的地方是,矩陣也有行和列的名字。

          ?

          ?

          有兩個(gè)特殊的向量,letters和LETTERS,分別由小寫字母和大寫字母組成。


          對(duì)矩陣取轉(zhuǎn)置進(jìn)行矩陣乘法的時(shí)候,需要注意乘積結(jié)果。轉(zhuǎn)置會(huì)置換行和列的名字。矩陣乘積的行名字取自左邊矩陣的行名字,矩陣乘積的列名字取自右邊矩陣的列名字。

          ?



          04
          數(shù)組


          本質(zhì)上,數(shù)組是一個(gè)多維向量,它的所有元素必須是相同類型,用方括號(hào)訪問(wèn)單個(gè)元素。方括號(hào)里第一個(gè)參數(shù)是行索引,第二個(gè)參數(shù)是列索引,剩下的參數(shù)是維度

          ?


          ?

          數(shù)組和矩陣最主要的不同是,矩陣只能是二維,而數(shù)組可以是任意維度


          數(shù)據(jù)的數(shù)據(jù)類型和結(jié)構(gòu)太多的話,會(huì)對(duì)一些分析環(huán)境帶來(lái)問(wèn)題,但是R語(yǔ)言都能從容應(yīng)對(duì)。R語(yǔ)言中最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)是一維向量。功能最強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)框(在其他語(yǔ)言中都沒(méi)有),可以像電子表格一樣處理混合數(shù)據(jù)類型。列表多用于存儲(chǔ)數(shù)據(jù)集合,有點(diǎn)像Perl中的散列表。



          本文摘編于《R語(yǔ)言:實(shí)用數(shù)據(jù)分析與可視化技術(shù)》

          點(diǎn)擊鏈接了解詳情并購(gòu)買


          本書借鑒數(shù)據(jù)科學(xué)家Jared P Lander在R語(yǔ)言上豐富的教學(xué)經(jīng)驗(yàn),通過(guò)大量實(shí)例,詳細(xì)講解R語(yǔ)言的核心功能。對(duì)于剛接觸統(tǒng)計(jì)程序和模型的人,本書的內(nèi)容組織結(jié)構(gòu)使得學(xué)習(xí)R語(yǔ)言相當(dāng)簡(jiǎn)單和直觀。本書主要介紹R語(yǔ)言中20%的核心功能,但是這20%的功能足以讓你解決80%的現(xiàn)代數(shù)據(jù)分析

          如果看到這里,說(shuō)明你喜歡這篇文章,請(qǐng)轉(zhuǎn)發(fā)、點(diǎn)贊。微信搜索「hych666」,歡迎添加我的微信,更多精彩,盡在我的朋友圈。
          掃描二維碼添加好友↓

          推薦閱讀

          (點(diǎn)擊標(biāo)題可跳轉(zhuǎn)閱讀)

          玩機(jī)器學(xué)習(xí),再也不缺數(shù)據(jù)集了

          揭秘!阿里巴巴電商算法首次對(duì)外公開(kāi)

          用BERT奪騰訊算法大賽50萬(wàn)元大獎(jiǎng)!

          集成學(xué)習(xí):一種先進(jìn)的機(jī)器學(xué)習(xí)方法

          NumPy庫(kù)入門教程:基礎(chǔ)知識(shí)總結(jié)

          人工智能最全學(xué)習(xí)路線!36本書,趕緊上車!


          老鐵,三連支持一下,好嗎?↓↓↓

          瀏覽 29
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  AA片在线观看视频 | 亚洲一本在线 | 9无码| 午夜爱爱爱视频 | 中文无码日逼 |