新手学习R语言方法论
今日之森 人生就像是激起的一朵浪花,转瞬即逝,却也希望飞舞的日子里既能经历人性的可爱,也能经历物性的神奇。 83篇原创内容 --> 公众号
尽管我不怎么会用R语言,但是今天还是想斗胆写一些关于R语言的认识。
(以下内容,仅仅是一枚R小白的粗浅认识,仅供参考,毕竟每个人的学习路径都不尽相同。)
记得第一次听说并接触R语言是在两年前差不多这个时候,但那个时候的接触仅限于只是安装了R语言,然后大概知道可以通过R语言来分析数据。
两年前的夏天用了几个月的时间学习了第一个R包——mobsim,但是学了几个月都不怎么明白这个包是干嘛的,而且学的很痛苦。
我就在想,我还连R是什么都不知道,就在学R包的具体用法,是不是有点顺序颠倒。于是在网上找到一本书《R语言实战》,这本书在网上的评价极高。
之后我翻开这本书一看,和大多数编程语言的书籍一样,内容过于系统,过于基础。所以这本书就很厚,500多页。那这本书到底好不好呢?
答案是肯定的,肯定好!很好,因为它很系统,很基础。
翻开这本书后就开始从头到尾一页一页的看。那种感觉有点像拿一本单词书,然后“abandon、abandon、abandon”。其结果可想而知,匆匆翻过“几遍”之后,就失去了耐心,起码英语我还记得“abandon”,而《R语言实战》在那段时间翻过几遍之后我毫无长进,从那之后到现在都没有翻过这本书了。
因为通过翻看这本书我还是无法准确的理解并运用mobsim,看了mobsim的官方说明文档也无济于事。那这是为什么呢?不是《R语言实战》写的不好,更不是mobsim的官方说明文档写的不够详细,而是那个时候对这个包所要描述和分析的实际问题我并不理解,所以才导致我对这个包的使用以失败和放弃而告终。
那在现在看来,其实我还是会说这本书很好!
在之后通过断断续续的学习R,最终也一无所获。去年到现在的一年多就再也没有打开过R。
最近我又在用R,是因为对R有需求。
有了需求,然后针对需求有指向的学习就很方便了。在最近的作图过程中发现有些软件并不能很好的满足我的要求,所以就把苗头指向了R。
这就再次回到两年前面临的问题了。两年前我使用R以失败告终,最终也没有解决这一问题,那现在还不是一样要解决这一问题。
当然,现在又开始学习R,除了一些软件不能满足我的作图要求之外,还有一个原因是因为我发现我们常用的几乎全部的生物学软件的功能都可以使用R来解决,某种程度上效果都要比单一的软件要好。
安装这么多形形色色的软件还要占据本就拮据的C盘和软件盘的内存,这就让人很不爽。尽管我的C盘和两个软件盘还有足够的空间,但还是不舒服。
![](https://img.haomeiwen.com/i16917170/24d81b76b0283d60.png)
![](https://img.haomeiwen.com/i16917170/b558455c90a0d574.png)
![](https://img.haomeiwen.com/i16917170/848b242e3c26e53b.png)
如果捧着一本单词书疯狂背,不是学不好英语,只是大多数人都坚持不住。如果打开一本《R语言实战》,不是学不好R语言,只是大多数人看不下去。
所以从我个人的认知出发,想要掌握R语言的日常使用。最好的方式就是先要设想一个问题情境,然后了解这一问题的常规解决思路和方法,可以先用替代软件实现可视化,然后再尝试用R来解决它,起码在R运行过程中,可以对照参数说明很容易知道每一个参数的实际作用以及和常规软件之间的对于关系,这样下来,通过几次参数调试和熟练,基本上就可以掌握一些简单的包中涉及的函数,及其相关的参数。这一过程至少要过很多遍,代码最好自己手动敲,不要直接复制,因为在敲代码的过程中可以遇到很多坑,将来也可以更好地避免这些坑。等到可以用R熟练掌握情景一之后,就可以继续设想情景二……如果可以熟练的对十几个情景进行准确分析,并可视化分析结果的时候,基本上就对R有一个初印象。这个时候或许就知道自己再设想情景可能很难再进阶,此时就十分有必要把《R语言实战》重新搬出来研读,这个时候再看,那种感觉肯定就不一样,起码自己就知道看的过程中哪些可以暂时略过,而哪些需要研读。我相信,只要长期坚持使用R环境,很快就可以用R来解决一些日常科研作图的需求。另外,R和常规软件相比,其优势是可以对数据进行非常个性化的进行可视化。并且在导出图表时也有很大的方便之处。好了,废话说这么多,下面就来举个例子。比如我们设想一个情景:如何通过R来进行序列比对,并对比对结果进行可视化。说起序列比对,我首先想到DNAMAN,前面刚好写过一篇推文,主要介绍了DNAMAN的一些功能,推文中介绍了很多内置功能,但看来看去,DNAMAN最核心的功能其实就是序列比对,可以说是一个功能及其单一的软件。先不说这个。我们先用DNAMAN来解决上述情景。
![](https://img.haomeiwen.com/i16917170/72596ece9a9fdd64.png)
![](https://img.haomeiwen.com/i16917170/b49c256f06ac187f.png)
![](https://img.haomeiwen.com/i16917170/2c5c258d63aec930.png)
??msa??ggmsa
![](https://img.haomeiwen.com/i16917170/4db8abbda48b8cd8.png)
![](https://img.haomeiwen.com/i16917170/760aa81edd3bacee.png)
![](https://img.haomeiwen.com/i16917170/388d450ddd00ecc2.png)
BiocManager::install("msa")这里的标题为“新手学习R语言方法论”,名字起的有点大,总之是我一些学习R的想法,或许会对同样想学习R的你有些参考。
BiocManager::install("Biostrings")
install.packages("ggmsa")
library(msa)
library(ggmsa)
library(Biostrings)
hsp20<-readAAStringSet("H:/今日之森微信公众号/基因家族2/At_hsp20.sim.fasta")
myFirstAlignment<-msa(hsp20,method = "Muscle")
print(myFirstAlignment,show="complete")
##比对结果
MsaAAMultipleAlignment with 9 rows and 175 columns
aln (1..95) names
[1] MSAVAINHFFG----------------LPEAIEKLILPISRSGESNNESRGRGSSNNIPIDILESPKEYIFYLDIPGISKSDIQVTVEEERTLVI AT1G54050.2
[2] --MDL--GRF--------PIISILEDMLEVPEDHNNEK-TRNNPSRVYMRDAKAMAATPADVIEHPNAYAFVVDMPGIKGDEIKVQVENDNVLVV AT5G12020.1
[3] --MDLEFGRF--------PIFSILEDMLEAPEEQTEKT--RNNPSRAYMRDAKAMAATPADVIEHPDAYVFAVDMPGIKGDEIQVQIENENVLVV AT5G12030.1
[4] --MSMIPSFFNNNRR--SNIFDPFSLDVWDPFKELTSS--------SLSRENSAIVNARVDWRETPEAHVFKADLPGLKKEEVKVEIEEDSVLKI AT2G29500.1
[5] --MSLIPSFFGNNRRINNNIFDPFSLDVWDPFKELQFP----------SSSSSAIANARVDWKETAEAHVFKADLPGMKKEEVKVEIEDDSVLKI AT1G59860.1
[6] --MSLIPSFFGNNRR-SNSIFDPFSLDVWDPFKELQFP-------SSLSGETSAITNARVDWKETAEAHVFKADLPGMKKEEVKVEIEDDSVLKI AT1G07400.1
[7] --MSLIPSIFGGRR---SNVFDPFSQDLWDPFEGFFTP-SSALANASTARDVAAFTNARVDWKETPEAHVFKADLPGLKKEEVKVEVEDKNVLQI AT5G59720.1
[8] --MSLVPSFFGGRR---TNVFDPFSLDVWDPFEGFLTP----GLTNAPAKDVAAFTNAKVDWRETPEAHVFKADVPGLKKEEVKVEVEDGNILQI AT3G46230.1
[9] --MSLIPSIFGGRR---TNVFDPFSLDVFDPFEGFLTP---SGLANAPAMDVAAFTNAKVDWRETPEAHVFKADLPGLRKEEVKVEVEDGNILQI AT1G53540.1
Con --MSLIPSFFG??R---?NIFDPFSLDVWDPFE????P---????????RD??A??NA?VDW?ETPEAHVFKADLPG?KKEEVKVEVED?NVL?I Consensus
aln (96..175) names
[1] KSNGKRKRDDDESEEGSKYIRLERRLAQNLVKKFRLPEDADMASVTAKYQEGVLTVVIKKLPP-QPPKPKTVQIAVS--- AT1G54050.2
[2] --SGERQRENKENEG-VKYVRMERRMGK-FMRKFQLPENADLDKISAVCHDGVLKVTVQKLPPPEPKKPKTIQVQVA--- AT5G12020.1
[3] --SGKRQRDNKENEG-VKFVRMERRMGK-FMRKFQLPDNADLEKISAACNDGVLKVTIPKLPPPEPKKPKTIQVQVA--- AT5G12030.1
[4] --SGERHVEKEDKND--TWHRVERSSGQ-FTRRFRLPENVKMDQVKAAMENGVLTVTVPKAET---KKADVKSIQISG-- AT2G29500.1
[5] --SGERHVEKEEKQD--TWHRVERSSGG-FSRKFRLPENVKMDQVKASMENGVLTVTVPKVET-NKKKAQVKSIDISG-- AT1G59860.1
[6] --SGERHVEKEEKQD--TWHRVERSSGQ-FSRKFKLPENVKMDQVKASMENGVLTVTVPKVEE-AKKKAQVKSIDISG-- AT1G07400.1
[7] --SGERSKENEEKND--KWHRVERASGK-FMRRFRLPENAKMEEVKATMENGVLTVVVPKAPE---KKPQVKSIDISGAN AT5G59720.1
[8] --SGERSSENEEKSD--TWHRVERSSGK-FMRRFRLPENAKVEEVKASMENGVLSVTVPKVQE---SKPEVKSVDISG-- AT3G46230.1
[9] --SGERSNENEEKND--KWHRVERSSGK-FTRRFRLPENAKMEEIKASMENGVLSVTVPKVPE---KKPEVKSIDISG-- AT1G53540.1
Con --SGER??ENEEK?D--KWHRVERSSGK-F?RKFRLPENAKM??VKA?MENGVLTVTVPK?P?-??KKP?VKSIDISG-- Consensus
msaPrettyPrint(myFirstAlignment,alFile="./hsp20.msa1.fasta")
hsp20 <- readBStringSet("H:/Rstudio/hsp20.msa1.fasta")
ggmsa(hsp20,0,175,color = "Clustal",font = "TimesNewRoman",char_width = 0.5)
本文使用 文章同步助手 同步