《機器學習與資料科學(基於R的統計學習方法)》——2.7 使用檔案連線

非同步社群發表於2017-05-02

本節書摘來非同步社群《機器學習與資料科學(基於R的統計學習方法)》一書中的第2章,第2.7節,作者:【美】Daniel D. Gutierrez(古鐵雷斯),更多章節內容可以訪問雲棲社群“非同步社群”公眾號檢視。

2.7 使用檔案連線

另一種從資料來源中讀取資訊的方式是通過檔案連線。利用連線,你可以讀入CSV檔案,就像我們在前面看到的那樣。不同的是,你也可以從文字檔案中讀取資料行。在資料不太規整的情況下,從文字檔案中按行讀取資料是有意義的。為此,R有一個有用的函式readLines(),可以和檔案連線一同使用。在我們檢視readLines()的例子之前,首先來看看檔案連線是如何工作的。考慮下面的示例程式碼:

> con <- file("./data/SFParkingMeters.csv", "r")
> SFParkingMeters <- read.csv(con)
> close(con)
> head(SFParkingMeters)```
前面的例子首先使用file()函式來建立CSV檔案與命名為con的物件的連線。然後,我們呼叫read.csv()函式,使用連線物件作為引數,以讀取檔案的內容。最後,完成後關閉連線是很好的習慣。跟前面的一樣,資料框SFParkingMeters包含了檔案的內容。

現在讓我們回到readLines()函式,然後做一些完全不一樣的事情。這一次,資料來源將會是一個網頁,所以我們會使用url()函式來提供網頁的地址。遵循和之前一樣的步驟,但設定引數n=20,表示只讀取網頁的前20行(如果一次只想讀取1行,取n=1)。

con <- url(“http://radicaldatascience.wordpress.com/”, “r”)
RDS <- readLines(con, n=20)
close(con)
head(RDS)`
在上文中,使用head(),展示了從我的部落格上讀取的HTML文字。

[1] "<!DOCTYPE html>"        "<!--[if IE 7]>"        
[3] "<html id="ie7" lang="en">" "<![endif]-->"         
[5] "<!--[if IE 8]>"        "<html id="ie8" lang="en">"```
使用readLines()的一個很重要的方面是:資料行儲存在特徵向量而不是資料框中。你可以使用class()函式來檢視:

class(RDS)

[1] “character”`
將檔案中的文字行儲存在向量中意味著你必須寫R程式碼來處理資料,以解釋資料的含義。舉個例子,如果資料行中包含Twitter社交媒體內容,那麼你可能希望開發一個演算法來執行推文中的文字傾向性分析。

R中有很多其他函式涉及連線。要檢視完整的列表,使用如下命令:


相關文章