生物技能树(R第四节)
文章目录
首先双击打开R_02.Rproj
02_rpackages.R
一、函数与参数
1.形式参数与实际参数
2.写函数的函数
#function:创造别的函数
3、复习:绘图函数plot()
给向量画图:
相同的代码,不同的数据画图
用iris的前四列,每一列画一个点图:
用函数代替复制粘贴
4.练习
答案:
1.A,C,E
2.
> jimmy <- function(a,b=2,m=1){a^b-1}
> jimmy(a=5)
[1] 24
二、R包(R package)
1.R包介绍
- 多个函数的打包存放
- 包含数据、函数,帮助文件、描述文件等
- 为什么需要安装R包(特定的分析功能,需要用相应的包实现)
- 伪问题:学一个R包要多久?
##在不打开脚本的情况下,全选运行它
在R语言中,source() 函数用于读取一个R脚本文件(通常是以 .R 为扩展名的文本文件),并逐行执行该文件中的代码。这使得你可以将一段代码或多个函数保存在一个文件中,然后在其他R脚本或R会话中调用这个文件,而不必重新输入所有代码。
函数的基本语法如下:
source(filename)
这里的 filename 是要执行的R脚本文件的路径和名称。如果文件在当前工作目录中,你只需要提供文件名;否则,你需要提供完整的路径。
例如,如果你有一个名为 myscript.R 的文件,它包含了一些R代码或函数定义,你可以使用以下命令在R会话中执行这个文件的内容:
source("myscript.R")
如果 myscript.R 文件位于不同的目录,例如在 /home/user/Rscripts 目录下,你需要提供完整的路径:
source("/home/user/Rscripts/myscript.R")
2.R包安装
1.CRAN网站
安装命令:
install.packages()
2.Bioconductor
需要先安装BiocManager这个R包,然后使用BiocManager::install(“R包名字”)函数
安装命令:
旧命令:BiocInstaller::biocLite()
新命令:BiocManager::install()
3.github
需要先安装devtools这个R包,然后使用devtools::install_github(“作者用户名/R包名字”)
R包只知道名字,不知道哪里来的怎么办?官网搜索/百度一下来自哪里
安装命令:
devtools::install_github()
##要求必须把R包作者的用户名写上去
devtools::install_github("jmzeng1314/包名")
理解安装和加载:类似于在手机上装软件,安装类似于下载淘宝,加载就是类似每次打开淘宝的操作,每次打开一个新的session加载一下所需的R包
3.怎样实现快速的下载?
使用镜像,镜像是境外网站被各种机构搬运到境内的网站
1.常用镜像地址
清华镜像
http://mirrors.tuna.tsinghua.edu.cn/CRAN/
http://mirrors.tuna.tsinghua.edu.cn/bioconductor/
中科大镜像
http://mirrors.ustc.edu.cn/CRAN/
http://mirrors.ustc.edu.cn/bioc/
2.设置镜像的方法
1.tools-global options-packages
#此方法只能设置CRAN的镜像,没办法设置Bioconductor的镜像
3.代码设置
options(“repos”=c(CRAN=“http://mirrors.tuna.tsinghua.edu.cn/CRAN/”))
options(BioC_mirror = “http://mirrors.tuna.tsinghua.edu.cn/bioconductor/”)
4.R包安装和使用的逻辑
R包安装成功的唯一标准:library()没有error
#只是起类似作用
5.报错的解决办法
满分操作,分情况讨论
require与library类似,加载R包用的,library会报错,require不会报错,
if(!require(stringr))install.packages(“stringr”)
require返回是否安装了stringr这个包,返回了F,用!转换成了T
if函数:当括号内的逻辑值为T时执行后面的语句,如果逻辑值为F则不执行
因此整句话的意思是:如果没有安装stringr就安装它
1.加载R包
- library(tidyr)
library是每次打开session都要运行的
library有没有error是R包是否安装成功的金标准 - require(tidyr)
和library的区别:
遇到不存在的包的时候,library会报错,require只会warning,脾气比较好
可以用as.logical()转换为逻辑值,或者放在一个需要放逻辑值的地方即可
用于检查某个R包是否加载了,如果没有则加载它
6.拓展阅读:使用pacman包来方便快捷的批量管理各种r包
1.学R语言要高冷:能no就no
2.学linux要乖乖听话,叫yes就yes
3.pacman包可以批量管理R包
7.练习4-2 安装以下所有的包
data.table
rio
tibble
ggplot2
ggpubr
eoffice
patchwork
tidyr
dplyr
stringr
qlcMatrix
安装后加载,library是检验是否安装成功的金标准
if(!require(data.table))install.packages("data.table")
if(!require(rio))install.packages("rio")
if(!require(tibble))install.packages("tibble")
if(!require(ggplot2))install.packages("ggplot2")
if(!require(ggpubr))install.packages("ggpubr")
if(!require(eoffice))install.packages("eoffice")
if(!require(patchwork))install.packages("patchwork")
if(!require(tidyr))install.packages("tidyr")
if(!require(dplyr))install.packages("dplyr")
if(!require(devtools))install.packages("devtools")
if(!require(qlcMatrix))devtools::install_github("cysouw/qlcMatrix")
if(!require(stringr))install.packages("stringr")
#自己安装时报错
qlcMatrix安装失败,查找安装方式如下
搜索:qlcMatrix R包
发现R包已经从CRAN上移除,可以找出老版本,百度一下如何安装旧版本:
install archive cran package
添加链接描述
可以挑选第四种方式安装一个老版本:0.9.7,我模拟第四种方案代码:install.package(“~/software/ArchR/ArchR-master.zip”,repo=NULL,type=“source”)
1.直接下载压缩包后本地安装,把qlcMatrix_0.9.7.tar.gz包下载在工作目录下
install.packages(“qlcMatrix_0.9.7.tar.gz”,repo=NULL,type=“source”)
2.直接输入网址安装,直接用链接代替,不用下载
#给链接赋值
ad=https://cran.r-project.org/src/contrib/Archive/qlcMatrix/qlcMatrix_0.9.7.tar.gz
if(!require(qlcMatrix))install.packages(ad,repo = NULL)
library(qlcMatrix)
3.接着查找github上是否有次R包:
site gitbhub qlcMatrix,限定github搜索
#先下载devtools R包
install.packages(“devtools”)
library(devtools)
#用github安装qlcMatrix R包
devtools::install_github(“cysouw/qlcMatrix”)或
if(!require(qlcMatrix))devtools::install_github(“cysouw/qlcMatrix”)
library(qlcMatrix)
2和3方法都能安装成功
8.R包安装常见疑问
1.提示信息
检查是否有error,没有就忽略
2.package not available
原因1:包名写错
原因2:安装命令使用错误
原因3:本机的R语言版本与包所要求的版本不符(极少),R语言版本99%的情况下没有问题,但它总是被无辜怀疑
原因4:包过时被剔除
Bioconductor:removed packages
CREN:archive packages
3.是否更新?是否。。
问是否update先n不行再y,如果说依赖包的版本不够新,则需要取消加载-卸载-重启session-安装
懒惰策略,能不更新就不更新,除非一直报错。
不想回答:安装命令参数:update=F,ask=F
更新一个包:取消加载,卸载,重启session,安装
4.加载A包,报错B包不存在
5.网络问题
网络问题:connection、internet、url、404、http、download
没联网?校园网设置?镜像没设置?镜像崩了?
6.not writable/permission denied
说明是权限问题,暂时解决办法:以管理员身份打开R Studio,或者设置一下电脑权限,MAC电脑不需要此操作
#可按照小洁老师的方法(R语言和R包安装),把R语言和Rstudio的权限设为最高,设置为完全控制电脑
添加链接描述
7.如果出现????有可能是中文用户名惹的祸,需要设置一下环境变量,见课前答疑文档
8.总结
9.练习
test = read.csv("exercise2.csv")
筛选test中,Species列的值为a或c的行
#三种方式
熟练运用%in%
test[test$Species!="b",]
test[test$Species=="a"|test$Species=="c", ]
最佳解决方案:
test[test$Species %in% c("a","c"),]
9.R包的使用场景
10.R包如何使用,获取帮助
1.快速查看帮助文档,很有用!!!
?sd
2.找R包介绍页面
#直接搜
limma package
#代码查看作者写的在线教程,不是每个包都有Vignette
browseVignettes("limma")
3.列出某个包里面包含的所有函数和数据
ls("package:limma")
三.总结
1.模式图总结
2.R语言里的符号
3.认清函数和数据
函数:括号前面的英文单词都叫函数
形式参数:就是参数的名称,函数括号里等号前的内容,熟练后,形式名称可以省略
实际参数:函数括号里等号后边的内容,或者没有等号,形式参数省略,只剩实际参数
数据框或矩阵:【】前的英文单词
列表:【【】】前
文件名:文件名称出现在代码里永远带引号,
包:library()
四. 尝试画图
install.packages("ggstatsplot")
library(ggstatsplot)
ggbetweenstats(iris,x = "Species", y = "Sepal.Length")
查看帮助文档,试着运行帮助文档里的代码,看能出什么图
?ggbarstats