版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、R高级编程技巧及Rcpp的介绍,颜林林 北京大学生物信息中心 2011年5月28日,R语言的特点,FREE:开源、免费、自由、灵活, a nrow(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+ “
2、S-Plus 发胸牌给p; 发给p; ,生活中的思维方式: 发资料、胸牌等 给参加R大会的人,能用更少的话说清楚,就别罗嗦!, a a * 2 sin(a),R是一门解释型语言, a # 向量运算 b # 循环 b for (i in seq_along(a) bi - sin(ai) ,R是一门解释型语言, system.time(replicate(10000, b b system.time(replicate(10000, for (i in seq_along(a) bi - sin(ai) user system elapsed 6.15 0.02 6.44,把苦力活交给底层,尽量
3、避免使用循环!,如何掌握好向量运算,R语言基本数据类型 vector, matrix, array, data.frame, list, . 元素的提取方法 a1:3, a-2, aa3, ac(x,y), . 数据类型之间的互相转换 as.matrix(), as.vector(), as.character(), . apply系列函数 apply(), sapply(), lapply(), tapply(), . 其他各种函数 sum(), mean(), cumsum(), combn(), .,R语言元素类型,整数(integer) 实数(numeric, double) 复数(c
4、omplex) 字符(character) 逻辑(logical) 原始数据(raw) 因子(factor),1:10 c(1.1, 3.14, 10) c(1+i, 3-2i) c(a, b, COS) c(TRUE, FALSE) as.raw(48) as.factor(letter1:3),R语言基本数据类型,向量(vector) 列表(list) 矩阵(matrix) 数组(array) 数据框(data.frame),R语言基本数据类型,向量(vector) 列表(list) 矩阵(matrix) 数组(array) 数据框(data.frame),一维,同类型元素 一维,不同类型
5、元素 二维,同类型元素 二维或多维,同类型元素 二维,每列元素同类型,学习R函数时应注意,apply系列函数,函数apply, (m apply(m, 1, sum) # 相当于 rowSums(m) 1 16 20 apply(m, 2, sum) # 相当于 colSums(m) 1 3 7 11 15 apply(m, 1:2, function(x) x / 2) ,1 ,2 ,3 ,4 1, 0.5 1.5 2.5 3.5 2, 1.0 2.0 3.0 4.0,函数lapply和sapply, (l lapply(l, sum) # 返回列表 $a 1 15 $b 1 40 sapp
6、ly(l, sum) # 返回向量 a b 15 40,函数sapply和vapply, (X sapply(X, fivenum) ,1 ,2 ,3 1, 1.0 1.0 1 2, 1.5 1.5 2 3, 2.0 2.5 3 4, 2.5 3.5 4 5, 3.0 4.0 5,函数sapply和vapply, (v vapply(X, fivenum, v) ,1 ,2 ,3 Min. 1.0 1.0 1 1st Qu. 1.5 1.5 2 Median 2.0 2.5 3 3rd Qu. 2.5 3.5 4 Max. 3.0 4.0 5,函数tapply, (d c(class(d),
7、class(d$age), class(d$gender) 1 data.frame numeric factor tapply(d$age, d$gender, mean) Female Male 24.0 24.5,函数mapply, mapply(function(x, y) seq_len(x) + y, c(a = 1, b = 2, c = 3), # names from first c(A = 10, B = 0, C = -10) $a 1 11 $b 1 1 2 $c 1 -9 -8 -7,函数rapply, (X rapply(X, function(x) x) a b.
8、c d 3.14159265358979 1 a test,举例:求DNA互补链,DNA由A、C、T、G组成DNA两条链方向相反成对碱基,A与T配对,C与G配对 已知其中一条为“ACTGAAGTGC”求另一条序列,举例:求DNA互补链,# 方法一:循环 revcom1 - function(DNA) result - for (i in nchar(DNA):1) n - substr(DNA, i, i) if (n = A) result - paste(result, T, sep = ) if (n = T) result - paste(result, A, sep = ) if (
9、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
10、= ) ,# 方法三:names() revcom3 - function(DNA) tr - c(A,C,G,T) names(tr) - rev(tr) paste(trrev(strsplit(DNA, )1), collapse = ) , tr T G C A A C G T,举例:求DNA互补链,方法比较, library(rbenchmark) benchmark(revcom1(DNA), revcom2(DNA), revcom3(DNA), columns = c(test, replications, elapsed,relative), order = relative
11、,replications = 1000) test replications elapsed relative 3 revcom3(DNA) 1000 0.163 1.000000 2 revcom2(DNA) 1000 0.597 3.662577 1 revcom1(DNA) 1000 0.624 3.828221,R的灵活性,R是什么语言写成的? C/C+、Fortran、R R的外部扩展 Writing R Extensions,R与各种语言,R + bash / Rscript RDCOM rJava rpy, rpy2 Embeded Rserve、R API、Rcpp,R 与
12、C+,R(解释型语言) 无需编译 不需要其它文件 弱类型语言 灵活性好 运行速度较慢 其他特性 向量运算 大量统计和绘图函数,C+(编译型语言) 需要事先编译 需要头文件和库文件 强类型语言 灵活性相对较差 运行速度快 其他特性 面向对象 模板与泛型编程,从C到C+,字符串、数组等类型 内存的管理 模板和泛型编程 STL (Standard Template Library),Rcpp相关历史,RQuantLib RcppTemplate Rserve rcppbind / RAbstraction / RObjects / CXXR R API Rcpp / RInside / RProto
13、Buf,Rcpp的运用,在R中调用C+模块(Rcpp) 用C+实现计算功能 通过C+调用其他软件库 在C+中使用R(RInside) 向量运算(STL) 使用R的统计函数 使用R的绘图函数,举例:Rcpp和inline带来的速度,f - function(n, x=1) for (i in 1:n) x=1/(1+x) g - function(n, x=1) for (i in 1:n) x=(1/(1+x) h - function(n, x=1) for (i in 1:n) x=(1+x)(-1) j - function(n, x=1) for (i in 1:n) x=1/1+x
14、k - function(n, x=1) for (i in 1:n) x=1/1+x library(rbenchmark) N - 1e5 benchmark(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 (i in 1:n) x=1/(1+x) g - function(n, x=1) for (i i
15、n 1:n) x=(1/(1+x) h - function(n, x=1) for (i in 1:n) x=(1+x)(-1) j - function(n, x=1) for (i in 1:n) x=1/1+x k - function(n, x=1) for (i in 1:n) x=1/1+x test replications elapsed relative 5 k(N, 1) 10 6.103 1.000000 1 f(N, 1) 10 6.426 1.052925 4 j(N, 1) 10 6.835 1.119941 2 g(N, 1) 10 7.339 1.202523
16、 3 h(N, 1) 10 9.226 1.511716,举例:Rcpp和inline带来的速度,library(inline) src (ns); double x = as(xs); for (int i=0; in; i+) x=1/(1+x); return wrap(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), col
17、umns=c(test, replications, elapsed, relative), order=relative, eplications=10) test replications elapsed relative 6 l(N, 1) 10 0.027 1.0000 5 k(N, 1) 10 6.190 229.2593 1 f(N, 1) 10 6.379 236.2593 4 j(N, 1) 10 6.808 252.1481 2 g(N, 1) 10 7.267 269.1481 3 h(N, 1) 10 9.184 340.1481,举例:Rcpp API,#include RcppExport SEXP foo(SEXP a, SEXP b) Rcpp:NumericVector xa(a); Rcpp:NumericVector xb(b); int n = std:min(a.size(),
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 运输合作合同模板
- 棉花采购合同2024年度定制版(含质量、交货期限)
- 四下英语三单元教学课件教学课件教学
- 《醒脑开窍针法》课件
- 《鸡大肠杆菌病》课件
- 20恐龙课件教学课件
- 企业借款合同范本
- 机械设备租赁合同协议书
- 深圳市劳动合同经典版
- 《工地建设》课件
- 床单洗涤与更换制度
- GB/T 23106-2024家用和类似用途毛发护理器具性能测试方法
- 16G362钢筋混凝土结构预埋件(详细书签)图集
- 安装充电桩施工方案
- 2025届甘肃省庆阳市庆城县陇东中学高考考前提分物理仿真卷含解析
- TDACS 001.1-2024 现代奶业评价 奶牛场定级与评价
- 四年级劳动教育《我是小小志愿者》教学设计
- 石油钻采设备采购与供应链管理考核试卷
- 2023八年级语文上册 第三单元 名著导读《红星照耀中国》纪实作品的阅读配套教案 新人教版
- 2024-2030年中国应急柴油发电机行业市场发展趋势与前景展望战略分析报告
- 工业产品质量安全日管控、周排查、月调度工作制度
评论
0/150
提交评论