天天看點

《R語言機器學習:實用案例分析》——1.2節R的資料結構

本節書摘來自華章社群《r語言機器學習:實用案例分析》一書中的第1章,第1.2節r的資料結構,作者[印度] 拉格哈夫·巴利(raghav bali)迪潘簡·撒卡爾(dipanjan sarkar),更多章節内容可以通路雲栖社群“華章社群”公衆号檢視

1.2 r的資料結構

這裡将介紹r中最有用的資料結構,并在一些虛構的示例中使用它們,以便更好地掌握它們的文法和構造。這裡将介紹的主要資料結構包括:

向量

數組和矩陣

清單

資料框

這些資料結構在r和r添加包以及函數(包括我們在後續章節中将要使用的機器學習函數和算法)中廣泛地使用。是以知道如何有效地使用這些資料結構來處理資料是十分必

要的。

1.2.1 向量

正如我們在上一節中簡單提到的,向量是r中最基本的資料結構。我們使用向量來表示任何内容,包括輸入和輸出。我們以前知道如何生成向量以及對它們進行數學運算。這裡,我們将看到更多的例子。

1.2.1.1 生成向量

這裡,我們将看到初始化向量的方法,其中的一些方法我們之前已經使用過,例如:運算符和函數c。在接下來的代碼片段中,我們将使用seq系列的函數通過不同的方法來初始化向量。

1.2.1.2 索引和命名向量

選擇向量子集和索引向量來通路向量的特定元素是最重要的向量運算之一,當我們僅僅想要在特定資料點上運作一些代碼時,這些運算通常是很有用的。接下來的例子将介紹一些索引和選擇向量子集的方法:

現在,讓我們來看一看如何命名向量。可以命名向量中的每一個元素,使它們變得易于閱讀或者容易解釋,這是r的一個非常好的特點。有兩種命名向量元素的方法,如下例所示:

《R語言機器學習:實用案例分析》——1.2節R的資料結構

是以,你可以看到,有時候注釋和命名向量是十分有用的,并且我們還可以通過使用元素名而不是元素值來選擇向量子集和進行向量分段。

1.2.2 數組和矩陣

向量是一維資料結構,這意味着它們隻有一個次元,可以通過利用它們的length (長度)特征來擷取向量中的元素個數。請記住,在其他程式設計語言中,數組也有類似的含義,而在r中有細微的不同。通常,在r中的數組都是多元資料結構。矩陣隻是數組的特例,它有兩個次元,即通過特征rows(行)和columns(列)來表示。讓我們來看一看下面小節中的示例代碼片段。

1.2.2.1 建立數組和矩陣

首先,我們将建立一個包含3個次元的數組。現在,在螢幕上可以很容易顯示兩個次元。但是,要再增加一個次元,在r中有特殊方式變換資料。下面的例子将說明如果在r中填補每一個次元中的資料(首先是列),并說明一個4×3×3數組的最終結果:

《R語言機器學習:實用案例分析》——1.2節R的資料結構

正如之前所介紹的,矩陣隻是數組的特例。可以使用matrix函數生成一個矩陣,将在下面的例子中詳細介紹。請記住,在下面例子的矩陣中,我們使用參數byrow逐行填充矩陣中的資料;而在r的預設情況下,無論是數組還是矩陣,都是逐列填充資料。參數ncol和nrow分别代表列數和行數。

《R語言機器學習:實用案例分析》——1.2節R的資料結構
《R語言機器學習:實用案例分析》——1.2節R的資料結構

1.2.2.3 矩陣運算

許多機器學習和優化算法将矩陣作為它們的輸入資料。下面将介紹一些最基本的矩陣運算。

首先,初始化兩個矩陣;然後,應用像c函數(傳回一個向量)、rbind函數(按行合并矩陣)和cbind函數(按列合并矩陣)這樣的函數來合并兩個矩陣。

《R語言機器學習:實用案例分析》——1.2節R的資料結構
《R語言機器學習:實用案例分析》——1.2節R的資料結構
《R語言機器學習:實用案例分析》——1.2節R的資料結構

以上的算術運算隻是大量矩陣函數和運算符中最常用的部分。它們十分有用,尤其是線上性優化等領域中。

1.2.3 清單

清單是一種特殊的向量,在這種向量中的元素可以是不同的資料結構,或者是簡單的資料類型。在某些方面它與python程式語言中的清單很像,如果你之前使用過python的清單,就會發現清單中的元素可以是不同的類型,并且每一個元素在清單中都有一個特定的索引。在r中,清單中的每一個元素可以簡單地是一個元素,也可以複雜地是一個完整的矩陣、一個函數甚至一個字元串向量。

1.2.3.1 建立和索引清單

在下面的例子中,首先我們将學習用一些常用的方法建立和初始化清單。另外,我們還會看到如何通路清單中的元素以進行進一步的運算。請記住,清單中的每一個元素可以是一個簡單的基本資料類型,或者甚至是複雜的資料結構或者函數。

《R語言機器學習:實用案例分析》——1.2節R的資料結構

在以上例子中,你可以看到如何通路清單中的元素并使用它們進行進一步的運算,例如cos函數。

1.2.3.2 合并和轉換清單

在下面的例子中,我們将看到如何将多個清單合并到一個清單中:

《R語言機器學習:實用案例分析》——1.2節R的資料結構
《R語言機器學習:實用案例分析》——1.2節R的資料結構

1.2.4 資料框

資料框是一種特殊的資料結構,它通常用來存儲資料表格或電子表格形式的資料。資料框中的每一列代表一個特定的屬性或字段,而行由這些列的具體取值組成。這種資料結構在處理有大量字段和屬性的資料集時十分有用。

1.2.4.1 建立資料框

使用函數data.frame可以很容易建立資料框。在下面的例子中,我們将以一些受歡迎的超級明星為例進行說明:

《R語言機器學習:實用案例分析》——1.2節R的資料結構

使用str函數能夠給出資料框的詳細結構,從中我們可以了解資料框中每一列資料的詳細資訊。在r基礎包中有許多可以直接通路的資料集,可以直接裝入和使用它們。下面介紹其中的一個mtcars資料集,它包含了1974年《美國汽車趨勢雜志》(motor trend u.s. magazine)中摘錄的不同汽車的資訊。

《R語言機器學習:實用案例分析》——1.2節R的資料結構

現在我們将看到更多複雜的操作,例如對資料框進行組合和合并。

《R語言機器學習:實用案例分析》——1.2節R的資料結構

在上述操作中,我們可以清楚地看到rbind函數和cbind函數與之前在數組和矩陣中的作用是一緻的。而merge函數可以讓你像連接配接關系資料庫中的多個表格那樣來合并數

據框。