《机器学习与数据科学(基于R的统计学习方法)》——2.7 使用文件连接

本节书摘来异步社区《机器学习与数据科学(基于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中有很多其他函数涉及连接。要查看完整的列表,使用如下命令:

上一篇:HBaseOnOSS冷数据存储


下一篇:取得每个用户登录次数和最后登录的时间