7.-颜林林-R高级编程技巧及Rcpp的介绍.ppt_第1页
7.-颜林林-R高级编程技巧及Rcpp的介绍.ppt_第2页
7.-颜林林-R高级编程技巧及Rcpp的介绍.ppt_第3页
7.-颜林林-R高级编程技巧及Rcpp的介绍.ppt_第4页
7.-颜林林-R高级编程技巧及Rcpp的介绍.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

R高级编程技巧及Rcpp的介绍 颜林林北京大学生物信息中心2011年5月28日 R语言的特点 FREE 开源 免费 自由 灵活 anrow a 截至2011年5月28日 CRAN上总计可用软件包数 3008 遵守各种不同开源协议 R语言的特点 FREE 开源 免费 自由 灵活 sort table gsub a License decreasing T 高校 科研机构 企事业单位 金融 通讯 医药 生物 环境 R语言的广泛运用 COS论坛 创办于2006年5月19日截至2011年5月28日 整个论坛 主题 16 000 回复 109 000 S Plus R语言 版 主题 4 000 回复 27 000 学习R的一个捷径 在COS上回帖 论坛中一些常见关于R的问题 如何画XX图 如何实现XX功能 安装时遇到XX问题如何解决 如何提高R程序的运行效率 153分钟学会R 正题 如何让R飞起来 R高级编程技巧向量运算软件包的使用Rcpp的介绍结合不同语言的优势拓展R的运用范围 向量运算 是一种习惯 循环的思维方式 for pin参加R大会的人 发资料给p 发胸牌给p 发 给p 生活中的思维方式 发资料 胸牌等给参加R大会的人 能用更少的话说清楚 就别罗嗦 aa 2 sin a R是一门解释型语言 a 向量运算 b 循环 bfor iinseq along a b i sin a i R是一门解释型语言 system time replicate 10000 bbsystem time replicate 10000 for iinseq along a b i sin a i usersystemelapsed6 150 026 44 把苦力活交给底层 尽量避免使用循环 如何掌握好向量运算 R语言基本数据类型vector matrix array data frame list 元素的提取方法a 1 3 a 2 a a 3 a c x y 数据类型之间的互相转换as matrix as vector as character apply系列函数apply sapply lapply tapply 其他各种函数sum mean cumsum combn R语言元素类型 整数 integer 实数 numeric double 复数 complex 字符 character 逻辑 logical 原始数据 raw 因子 factor 1 10c 1 1 3 14 10 c 1 i 3 2i c a b COS c TRUE FALSE as raw 48 as factor letter 1 3 R语言基本数据类型 向量 vector 列表 list 矩阵 matrix 数组 array 数据框 data frame R语言基本数据类型 向量 vector 列表 list 矩阵 matrix 数组 array 数据框 data frame 一维 同类型元素一维 不同类型元素二维 同类型元素二维或多维 同类型元素二维 每列元素同类型 学习R函数时应注意 apply系列函数 函数apply mapply m 1 sum 相当于rowSums m 1 1620 apply m 2 sum 相当于colSums m 1 371115 apply m 1 2 function x x 2 1 2 3 4 1 0 51 52 53 5 2 1 02 03 04 0 函数lapply和sapply llapply l sum 返回列表 a 1 15 b 1 40 sapply l sum 返回向量ab1540 函数sapply和vapply Xsapply X fivenum 1 2 3 1 1 01 01 2 1 51 52 3 2 02 53 4 2 53 54 5 3 04 05 函数sapply和vapply vvapply X fivenum v 1 2 3 Min 1 01 011stQu 1 51 52Median2 02 533rdQu 2 53 54Max 3 04 05 函数tapply dc class d class d age class d gender 1 data frame numeric factor tapply d age d gender mean FemaleMale24 024 5 函数mapply mapply function x y seq len x y c a 1 b 2 c 3 namesfromfirstc A 10 B 0 C 10 a 1 11 b 1 12 c 1 9 8 7 函数rapply Xrapply X function x x ab cd 3 14159265358979 1 atest 举例 求DNA互补链 DNA由A C T G组成DNA两条链方向相反成对碱基 A与T配对 C与G配对已知其中一条为 ACTGAAGTGC 求另一条序列 举例 求DNA互补链 方法一 循环revcom1 function DNA result for iinnchar DNA 1 n substr DNA i i if n A result paste result T sep if n T result paste result A sep if n C result paste result G sep if n G result paste result C sep result 举例 求DNA互补链 方法二 apply revcom2 function DNA s strsplit DNA 1 s sapply s function x if x A return T if x T return A if x G return C if x C return G paste rev s collapse 方法三 names revcom3 function DNA tr c A C G T names tr rev tr paste tr rev strsplit DNA 1 collapse trTGCA A C G T 举例 求DNA互补链 方法比较 library rbenchmark benchmark revcom1 DNA revcom2 DNA revcom3 DNA columns c test replications elapsed relative order relative replications 1000 testreplicationselapsedrelative3revcom3 DNA 10000 1631 0000002revcom2 DNA 10000 5973 6625771revcom1 DNA 10000 6243 828221 R的灵活性 R是什么语言写成的 C C Fortran RR的外部扩展WritingRExtensions R与各种语言 R bash RscriptRDCOMrJavarpy rpy2EmbededRserve RAPI Rcpp R与C R 解释型语言 无需编译不需要其它文件弱类型语言灵活性好运行速度较慢其他特性向量运算大量统计和绘图函数 C 编译型语言 需要事先编译需要头文件和库文件强类型语言灵活性相对较差运行速度快其他特性面向对象模板与泛型编程 从C到C 字符串 数组等类型内存的管理模板和泛型编程STL StandardTemplateLibrary Rcpp相关历史 RQuantLibRcppTemplateRservercppbind RAbstraction RObjects CXXRRAPIRcpp RInside RProtoBuf Rcpp的运用 在R中调用C 模块 Rcpp 用C 实现计算功能通过C 调用其他软件库在C 中使用R RInside 向量运算 STL 使用R的统计函数使用R的绘图函数 举例 Rcpp和inline带来的速度 f function n x 1 for iin1 n x 1 1 x g function n x 1 for iin1 n x 1 1 x h function n x 1 for iin1 n x 1 x 1 j function n x 1 for iin1 n x 1 1 x k function n x 1 for iin1 n x 1 1 x library rbenchmark N 1e5benchmark f N 1 g N 1 h N 1 j N 1 k N 1 columns c test replications elapsed relative order relative replications 10 举例 Rcpp和inline带来的速度 f function n x 1 for iin1 n x 1 1 x g function n x 1 for iin1 n x 1 1 x h function n x 1 for iin1 n x 1 x 1 j function n x 1 for iin1 n x 1 1 x k function n x 1 for iin1 n x 1 1 x testreplicationselapsedrelative5k N 1 106 1031 0000001f N 1 106 4261 0529254j N 1 106 8351 1199412g N 1 107 3391 2025233h N 1 109 2261 511716 举例 Rcpp和inline带来的速度 library inline src ns doublex as xs for inti 0 i n i x 1 1 x returnwrap x l cxxfunction signature ns integer xs numeric body src plugin Rcpp 举例 Rcpp和inline带来的速度 benchmark f N 1 g N 1 h N 1 j N 1 k N 1 l N 1 columns c test replications elapsed relative order relative eplications 10 testreplicationselapsedrelative6l N 1 100 0271 00005k N 1 106 190229 25931f N 1 106 379236 25934j N 1 106 808252 14812g N 1 107 267269 14813h N 1 109 184340 1481 举例 RcppAPI includeRcppExportSEXPfoo SEXPa SEXPb Rcpp NumericVectorxa a Rcpp NumericVectorxb b intn s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论