前面跟大家聊了一下 ☞R如何reverse一个字符串 ,其实这个只能实现反向,那怎么样才能实现互补呢?其实获取DNA的反向互补序列这个事情本身并不是很难。有很多网页工具都能够实现,我随便在网上搜了一下就找到3个。我这里只是想结合R语言来解决我们生物信息里面的一些小问题,帮助大家理解R。我们还是用上次的DNA序列来举例
如果大家只是想解决这个问题,可以使用下面提到的三个网页工具
1. https://www.bioinformatics.org/sms/rev_comp.html
将你的序列贴进对话框,点击SUBMIT就能得到方向互补序列
2. https://arep.med.harvard.edu/labgc/adnan/projects/Utilities/revcomp.html
你会发现这个工具不仅可以得到反向互补序列,还可以得到反向序列,互补序列,看你自己的需求是什么。将你的序列贴进对话框,点击reverse complement就能得到反向互补序列
3. http://www.cellbiol.com/cgi-bin/complement/rev_comp.cgi
将你的序列贴进对话框,点击Do the Job!就可以得到反向互补序列了
接下来我们用R语言来实现这个功能,我还是给大家介绍两种不同的方法。一种是比较原始一点的方法。第二种是站在前人的肩膀上,使用已有的R包来实现。
1.使用strsplit,rev,paste等R自带的函数来实现
2.使用mgsub包中的mgsub函数
参考资料: R如何reverse一个字符串
使用R包dplyr的函数arrange更简单,更简洁:
#多条件排序:使用dplyr::arrange
library(dplyr)
data("iris")
head(iris)
#第一列升序,然后是第三列升序
arrange(iris,iris[,1],iris[,3])
#第一列升序,然后是第三列降序
arrange(iris,iris[,1],-iris[,3])
扩展资料
R语言排序函数sort(),rank(),order()
>x<-c(97,93,85,74,32,100,99,67)
>sort(x)
[1]32677485939799100
>order(x)
[1]58432176
>rank(x)
[1]65431872