天天看點

《R語言機器學習:實用案例分析》——1.1節探究R的基本内容

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

1.1 探究r的基本内容

你必須已經熟悉r的互動式解釋器,通常稱作“讀入–求值–輸出”循環(read-evaluate-print loop, repl)。這個解釋器與任何等待輸入的指令行界面類似,它以輸入提示符>作為開始,表示r正在等待輸入。如果輸入需要多行,例如當編寫函數時,在每個後續行中會有+提示符,這意味着你沒有完成整個表達式的輸入,r要求你輸入表達式的剩餘部分。

r也可以讀取和執行以.r為擴充名的完整檔案,該檔案包括指令和函數。通常,任何一個大的應用程式都由多個.r檔案組成,每個檔案都在應用程式中扮演各自的角色,通常被稱作一個子產品。我們将在接下來的各節中探索r的主要特點和功能。

1.1.1 使用r作為科學電腦

r中最基本的元素包括變量和算術運算符,算術運算符可以用來進行像電腦那樣的數學運算,甚至複雜的統計計算。例如:

《R語言機器學習:實用案例分析》——1.1節探究R的基本内容
《R語言機器學習:實用案例分析》——1.1節探究R的基本内容

記住,在r中的一切都是以向量形式存在的。即使在以上代碼片段中的輸出結果也是向量。它們都有一個先導符号[1],表示這是一個含有一個元素的向量。

也可以像任何其他程式設計語言一樣,将值賦給變量。例如:

《R語言機器學習:實用案例分析》——1.1節探究R的基本内容

1.1.2 向量運算

r中最基本的資料結構是向量。基本上,在r中的任何元素都是向量,即使是像上述例子中看到的一個數也是向量。向量本質上是一個序列或值的集合。可以使用:運算符或用于連接配接值的c函數來生成向量。例如:

在以上代碼段中,你可以清楚地看到,我們僅僅使用+運算符把兩個向量相加,而沒有使用任何循環。這稱為向量化,我們在後面将進行更多的讨論。接下來,介紹更多的向量運算,如下所示:

《R語言機器學習:實用案例分析》——1.1節探究R的基本内容

輸出:

《R語言機器學習:實用案例分析》——1.1節探究R的基本内容

你或許被上面的第2個運算搞糊塗了,這裡嘗試用一個較小的向量乘以一個較大的向量,但仍然得到了運算結果!如果仔細觀察,就會發現r還傳回了一個警告。在這個示例中,當兩個向量在長度上不同時,本例中的小向量c(2,4)循環或者重複變為c(2,4,2,4,2),然後将它乘以第一個向量c(1,3,5,7,9),得到最終的結果向量c(2,12, 10,28,18)。這裡使用的其他函數是r基礎包中的标準函數。

下載下傳本書示例代碼

可以通過以下步驟下載下傳代碼檔案:

使用你的電子郵件位址和密碼進行登入或者注冊。

将光标放在頂部的support頁籤。

單擊code downloads & errata。

在search文本框中欄輸入書名。

選擇你要下載下傳的代碼檔案的書。

在下拉菜單中選擇你購買本書的地方。

單擊code download。

一旦檔案下載下傳,請確定使用以下軟體的最新版本對檔案夾進行解壓縮:

用于windows的winrar/7-zip

用于mac的zipeg/izip/unrarx

用于linux的7-zip/peazip

1.1.3 特殊值

由于在資料分析和機器學習的過程中,你将處理大量混亂和髒的資料,是以記住一些r中的特殊值是十分重要的,這樣它們中的某一個在後面出現時,你不會太驚訝。

這裡你應該關心的主要值包括:inf,代表無窮大(infinity);nan,代表非數值(not a number);na代表數值缺失或者無效(not available)。下面的代碼片段展示了對這些特殊值的邏輯測試以及它們的結果。請記住,true和false是邏輯資料類型值,類似于其他程式設計語言。

從這些函數的名字中,可以清晰地看出它們的作用。它們清楚地表明哪些值是有限的,哪些值是無限的,并分别檢查nan值和na值。在清洗髒資料時這些函數十分有用。

繼續閱讀