R语言-数据结构之初体验(parse html)
2016-08-21 22:00
253 查看
最近刚刚接触R语言,之前知道一些R语言的一些基本知识,这几天开始进行一些练习。
题目:从Download Stats for Bioconductor
Software Packages(http://bioconductor.org/packages/stats/index.html)中parse出所有的package以及download次数,要求返回为一个numeric vector,download times 为vector中的值,而对应的package储存在这个vector的name属性中,而且保证没有重复的package name.
我所采取的是利用readLines返回一个charactor vector 之后利用regular expression 提取出所需要的信息。在这里会遇到两个问题:
1、regular expression 的写法, regular expression应该遵循的是准确简介,在匹配html文件的时候最好能够加入><的匹配,这样不会混入一些无用信息。
2、如何去除没有匹配到的行,我采取的是subset,这样就导致了一个很麻烦的问题,就是我在同一个问题中采用了两次正则匹配,这样增加了运算时间。因为第一次正则匹配用来去除无用的行,第二次正则匹配用来提取出 package names 和 download times。
我之所以考虑这种办法的原因是我被答案要求的numeric vector限制住了,我想的是第一次返回就是vector。
而我参考的一个非常简单的做法是,
在readLines读出html文件后就把其paste成一个string,然后利用gregexpr进行一次正则匹配可以得出所有匹配上的位置以及长度,再利用substring一次提取出所有的的匹配上的字符返回是就是一个vector. gregexpr可以分组匹配的特点特别好用,这样就可以很方便的知道我们需要信息的起点和长度。
其实R的特点在于它的很多built-in functions都可以返回vector甚至是matrix所以当看到需要返回值是vector时不必那么慌张,反而R中很多数据结构都没有删除这个操作,vector 和 matrix中的删除操作就是提取出需要的行数. 以我现在的体会,在R所给出的数据结构如果做成动态的会相对比较复杂一点。
题目:从Download Stats for Bioconductor
Software Packages(http://bioconductor.org/packages/stats/index.html)中parse出所有的package以及download次数,要求返回为一个numeric vector,download times 为vector中的值,而对应的package储存在这个vector的name属性中,而且保证没有重复的package name.
我所采取的是利用readLines返回一个charactor vector 之后利用regular expression 提取出所需要的信息。在这里会遇到两个问题:
1、regular expression 的写法, regular expression应该遵循的是准确简介,在匹配html文件的时候最好能够加入><的匹配,这样不会混入一些无用信息。
2、如何去除没有匹配到的行,我采取的是subset,这样就导致了一个很麻烦的问题,就是我在同一个问题中采用了两次正则匹配,这样增加了运算时间。因为第一次正则匹配用来去除无用的行,第二次正则匹配用来提取出 package names 和 download times。
我之所以考虑这种办法的原因是我被答案要求的numeric vector限制住了,我想的是第一次返回就是vector。
而我参考的一个非常简单的做法是,
在readLines读出html文件后就把其paste成一个string,然后利用gregexpr进行一次正则匹配可以得出所有匹配上的位置以及长度,再利用substring一次提取出所有的的匹配上的字符返回是就是一个vector. gregexpr可以分组匹配的特点特别好用,这样就可以很方便的知道我们需要信息的起点和长度。
其实R的特点在于它的很多built-in functions都可以返回vector甚至是matrix所以当看到需要返回值是vector时不必那么慌张,反而R中很多数据结构都没有删除这个操作,vector 和 matrix中的删除操作就是提取出需要的行数. 以我现在的体会,在R所给出的数据结构如果做成动态的会相对比较复杂一点。
相关文章推荐
- 单链表的交并差(c 语言 数据结构)
- 学点 C 语言(24): 数据类型 - 结构(struct)
- 软件设计师教程 数据结构之线性链表的实现 (C/C++语言)
- Python中数据结构之字符串:每种语言必重点讲授的难点内容
- [HTML]HTML语言基本结构 [大三TJB_708]
- 图的遍历的演示(c 语言 数据结构课程设计题)
- 封装JSON数据转自定义HTML方法parseHTML
- 在ArrayCollection和DataGrid代码例举下展示的Flex控件、数据结构乃至flex语言存在的衍生性和关联性
- 2012年1月3日 星期二(oracle读书笔记,PL/SQL语言概述、块结构、数据类型)
- C语言基础-数据类型提升的层次结构
- 学点 C 语言(25): 数据类型 - 结构数组与结构指针
- 【转】 [翻译]C#数据结构与算法 – 前言&第一章 (原文:http://www.cnblogs.com/lsxqw2004/archive/2009/07/01/1366118.html)
- 《数据挖掘概念与技术》学习笔记第4章(4/10)数据挖掘原语、语言和系统结构
- 在ArrayCollection和DataGrid代码例举下展示的Flex控件、数据结构乃至flex语言存在的衍生性和关联性
- 数据结构(JAVA语言描述第三版)读书笔记
- 数据结构与算法 Java语言描述-源代码
- 数据结构与算法(C#语言描述)
- 数据结构课程设计---魔王语言解释
- 数据结构教程(java语言描述)徐孝凯主编----复习摘要01
- 【数据结构与算法的语言基础】数组与字符串