SCI写作模板与投稿合集
扫描下方二维码免费领取☟☟☟
一文帮你排查R语言学习中的坑
各位小伙伴们,大家好,我是解螺旋先锋班学员火,时隔多年(不是)我终于又回来啦!这次听闻八月份风助教打赏营Season1又要重开了,我这激动的心,颤抖的手果断打开电脑为我偶像风助教做(打)宣(广)传(告)。来报名参加风助教Season1打赏营的各位小伙伴往往都还是R语言的小白(当然也不乏一些大佬潜进来悄悄指导大家学习,这些彩蛋就要靠大家自己发掘了),所以作为一名已经惨遭过一轮R语言洗礼的老学长特来为大家提供一份R语言学习过程中的排坑指南,希望诸君闲暇之余可以看一看,瞟一瞟,如果能为大家学R的路上铲平一丢丢阻碍,那我就心满意足了~
一、什么是打赏营?
打赏营是解螺旋为优秀助教老师特开的一种训练营模式,针对有能力的助教老师,方便他们将毕生所学通过打赏营向学员传授。由于打赏营的内容是助教老师个人所学,由助教老师自己决定讲授内容,非解螺旋官方课程,因此学员必须向打赏营助教老师额外支付一笔小小的报酬,打赏费用全部归助教老师个人所得,以示感谢。
目前解螺旋的打赏营只为风助教开过一次,所以划重点,风助教的优秀和受欢迎程度不言而喻了吧。一杯奶茶钱就可以换来风助教长达两个星期的倾囊相授和温柔陪伴,这买卖谁做谁划算(~ ̄ ̄)~
二、风助教打赏营预习指南
作为撑起解螺旋生信半边天的男人,风助教在打赏营Season1会带领小白学员入门R语言,从安装R的软件,到下载R包,到使用函数,到数据清洗,到数据可视化,直到终极大Boss,能够自己写代码完成部分文章图表的复现。据不完全统计,从新手入门到完成以上目标共需60小时,共计15天,平均每天花费4小时。据更不完全统计,大概有一多半人会卡在第一步安装软件或安装R包上,剩下部分幸存者将在不断报错、改错,接着报错中崩溃去世。所以提前了解R语言学习难点和重点有助于我们在学习过程中始终保持一种积极的心态,不因软件Bug而心态炸裂,不因各种出错而原地爆炸。接下来我为大家总结了打赏营里可能会讲到的一些函数,供大家提前预习:
1
基本数据导入
Tidyverse中基本数据导入函数包括read_csv、read_tsv、read_csv2、read_delim、read_table等,其中read_delim可以读取任意分隔符的文件,read_csv读取逗号分隔的文件,read_tsv读取制表分隔符的文件,read_csv2读取分号分隔符的文件,而read_table读取空格分隔符的文件。如此之外还包括如read_fwf读取固定宽度的文件,read_log函数等等,在Rstudio中加载tidyverse后即可看到:
以read_csv为例,其中可设置参数包括:
read_csv(file, col_names = TRUE, col_types = NULL, locale = default_locale(),na = c("", "NA"), quoted_na = TRUE, quote ="\"", comment = "", trim_ws = TRUE, skip = 0, n_max = Inf, guess_max =min(1000, n_max), progress = show_progress(),skip_empty_rows = TRUE)
file为需要导入的以逗号分隔的文件,col_names对数据列名进行处理,na使数据以缺失值的形式呈现,可以自己指定缺失值,na.omit()则可以去除缺失值所在的一整行,可以与na通过管道符%>%一起使用,skip则表示跳过数据的前几行,从跳过的行之后开始读取数据。
2
管道函数%>%
管道,顾名思义,为两头开口中间空的管子,将内容直接从上一端传到下一端,在R里就是直接把上一步的结果转到下一步。管道函数用途之广泛下述函数例子中均可见到,为节省篇幅此处略去举例。快捷键为ctrl+shift+M。划重点,管道函数为tidyverse包中的函数,也就是说只有library(tidyverse)后才可使用。如果使用%>%报错了请回头看下是否加载了tidyverse包。
3
order函数
order函数为Base.R中的常用排序函数,通过order可以对数值进行排序,得到从小到大排列的序号,然后按照排序的序号分别提取数据集中的所有列,如:
4
select函数
selectsa subset of columns,提取部分列的数据,如提取前三列数据:
5
filter函数
filtersout rows according to some conditions,根据特定的条件过滤数据,挑选特定的行数。filter函数可以和布尔运算符进行搭配使用。如挑选出Species中值为“versicolor”的行:
6
slice函数
提取部分行的数据,如提取前三行数据:
7
mutate函数
addsa new column as a function of existing columns,增加新的列,如将Sepal.Length重新命名为一个新的列Length:
8

rename函数
对列名就行重命名,如将Sepal.Width重命名为Width:
9

arrange/descending函数
对数据进行升序/降序排列,如将Sepal.Length按照从大到小进行排列:
10
if_else函数
大名鼎鼎的if_else函数压轴出场,想必不用再介绍它的功能和用法了吧。给大家举个例子,如对Sepal.Length的值进行处理,大于7变化为1,其余为0,则:
当然啦,这些只是tidyverse包的基本函数使用,风助教的打赏营怎么可能只有这点干货,更复杂的函数考虑到这只是新手指南所以就暂且不放上来啦。大家先感受一下,提前预习一下要学习的内容,才能更快更好地跟上风助教的节奏😁
三、R语言学习新手避坑指南
每个初学R的小白都会遇到这样那样的问题,老师给的代码还没跑一半就开始报错了,然后疯狂头秃,找原因。更令人崩溃的是,花了一两个小时找出来的错发现原来只是一个小小的细节出了问题。我为大家整理了新新新新新手学R的过程中最容易疏忽犯错以及最容易产生迷惑的几个地方,请各位R语言大佬绕道而行,从没学过R的小白朋友们好好过一遍留下一个印象,毕竟我们新手能犯的错,是真的很神奇~
1
我的包到底装到哪里去了?
稍微对电脑了解一点的朋友都会很强迫症的尽量不往C盘装东西,生怕引起电脑卡顿,包括学R过程中安装的各色各样的包。在Rstudio中的Tools菜单栏下即可更改R包下载和安装的地址。可是在每次安装完R包后,总会看到这样的提示:·
但是!亲爱的朋友们,这只是表示安装的R包在C盘有缓存,并非包安装在了C盘,如果不信邪,.libpath()一下就知道R包的实际安装地址了。这种C盘的缓存大可不必担心,电脑管家清一清就好啦~
2
我的函数又到哪里去了?
但凡如果报错中出现这样的字眼“没有xxxx这个函数”,请回头检查一下是否library了包,检查发现没有函数多半是因为连包都没加载:
3
中英文输入法的问题
R语言代码中默认使用英文输入法进行输入,其实就字母而言大家是很容易注意到的,毕竟在中文输入法下输入字母会出现备选词的选项框,大家能马上发现输入法没切换过来,所以小白往往在一个神奇的地方在跟头----逗号。当你发现出现了类似这样的错误:
如unexpected xxxx,请回头检查一下你的逗号是否是英文输入法下的逗号。给大家感受一下中英文的区别:
      这个是中文:
中英文输入法下的逗号其实并不相同,但是在密密麻麻的代码下其实很容易被大家忽略,据我写了十几年代码的程序猿表哥所说,他上次写python一个逗号写错检查了一个小时。。。
4
括号括号
函数使用时后面会跟着一个括号,如果括号里面再加一个函数就又是一个括号了,子子孙孙,无穷尽也。越往后面学,叠加的括号也就越多,这个时候大家一定要不忘初心,牢记使命,时刻记得每使用一次括号都同时把左右两边同时打出来以免遗漏,否则就会有酱紫的报错:
所幸在R里面,当你把光标置于右边括号处时是可以显示其对应的左边括号在哪里,大家可以借此判断是否漏了括号:
5

等号等号
 在编程语言里,“=”表示赋值,“==”才表示等于,所以当想表示某个值等于某个值时请务必多加一个“=”:
6

拼写拼写
这其实是一些粗心马虎的朋友们容易犯的错误。风助教在打赏营疯狂输出的时候会推荐大家不要直接复制粘贴,最好是自己亲自动手敲一遍代码,往往这个时候就会有各种各样的报错出现了,请大家在提问到底哪里错了之前先务必确保:你作业没抄错,单词没拼错,大小写没写错等等。
7
忘加“,”
令人窒息的逗号又来了,不过这次强调的不是中英文输入的问题。许多小伙伴存在忘记加逗号的情况,尤其是在表示行列的时候以及函数括号内。前者忘记逗号会导致行列表示不清,后者会对函数结构产生影响:
8

T和TRUE
这一条我特别想加粗加黑显示。这个错误简直就是R的玄学问题。在某些时候,R语言中T和TRUE是等价的,在某些时候,只能写TRUE,不能写T,否则会出现酱婶的报错:
如果出现了报错且句子中有逻辑字符T,请各位小伙伴务必尝试一下将其改为TRUE试试,你永远捉摸不透到底什么时候可以用T,什么时候又不可以。。。
四、风助教打赏营彩蛋指南
想认真学习R的小伙伴估计有一半是为了画好看的图,一半是为了发生信文章叭。对于前者,风助教专门讲过一晚上如何画各种炫到爆炸的可视化图形,随手放一张给大家感受一下:
对于后者,风助教在上一次打赏营期间共分享了两次文献,并布置了一次文献解构作业。都说生信文章思路最重要,有风助教亲自讲解生信文章分析和复现思路,sci触手可及。给大家分享一下风助教解析文献的题目:
温馨提示,如果认真写文献作业还能得到风助教温柔耐心私人指导的机会哦~
那么福利那么多,怎么给自己争取呢?本火建议大家在打赏营期间积极参与,每天给我们温柔帅气的风老师打call,认真写作业,没事就在群里嗷一嗓子“老师我想听文献解构!”“老师我想画好看的图!”你们猜贴心的风老师会不会同意呢?风助教老师还是很喜欢大家捧场的,人越多越兴奋,所以助教老师输出的能有多疯狂就看大家学的有多疯狂啦!
欢迎大家关注解螺旋生信频道-挑圈联靠公号~

继续阅读
阅读原文