前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2023.4生信马拉松day4-函数与R包

2023.4生信马拉松day4-函数与R包

原创
作者头像
清南
发布2023-04-16 01:23:39
3980
发布2023-04-16 01:23:39
举报

本节思维导图

引用自 生信技能树小洁老师
引用自 生信技能树小洁老师

1.函数与参数

-(1)形式参数、实际参数、默认参数

如下图所示,形式参数是函数作者设计的,熟练之后可省略;

实际参数是使用者定的值,可以随需求改动;

默认参数是函数作者预先设置的,使用函数时不是所有参数都需要使用者指定,没指定的都使用默认值;


引用自 生信技能树小洁老师
引用自 生信技能树小洁老师

-(2)写函数的函数

代码语言:txt
复制
jimmy <- function(a,b,m = 2){
  (a+b)^m
}
# jimmy是函数名称;a,b,m是形式参数,2是m的默认值;大括号里是编写函数的代码;
#函数的使用:
jimmy(a = 1,b = 2)
#熟悉之后可以省略函数的形式参数:
jimmy(1,2)
jimmy(3,6)
jimmy(3,6,-2)

-(3)实例/复习绘图函数plot()

注①:函数只区分数据是什么,不管数据是怎么来的;

代码语言:txt
复制
par(mfrow = c(2,2)) #把画板分成四块,两行两列;如果报错,把右下角画板拉大一点即可
x = c(2,5,6,2,9);plot(x)
x = seq(2,80,4);plot(x)
x = rnorm(10);plot(x)
x = iris$Sepal.Length;plot(x)

注②:用相同的代码画不同的数据——用写函数代替复制粘贴——当一个代码需要复制粘贴3次,就应该写成函数或循环;

代码语言:txt
复制
#思考:plot画iris的前四列?
plot(iris[,1],col = iris[,5])
plot(iris[,2],col = iris[,5])
plot(iris[,3],col = iris[,5])
plot(iris[,4],col = iris[,5])

#当一个代码需要复制粘贴三次,就应该写成函数或使用循环
jimmy <- function(i){
  plot(iris[,i],col=iris[,5])
}
jimmy(1)
jimmy(2)
jimmy(3)
jimmy(4)

-练习4-1

写一个函数,参数是一个数值型向量,输出结果是该向量的平均值加2倍的标准差,并写出用户使用该函数的代码 。

代码语言:txt
复制
r4 <- function(x){
  mean(x)+2*sd(x)
}
a=c(1,2,3,4)
sd(a)
mean(a)
r4(a)

2.R包(R package)介绍

R包是多个函数/数据打包存放的东西;

特色功能需要使用特殊包;

3.怎么安装R包

不同来源的包需要用不同的安装方式;

不知道来源可以查一查或者拿不同命令试一试;

-(1) install.packages()

安装CRAN官方R包们;

-(2)BiocManager::install()

安装来自Bioconductor的包;

-(3)devtools::install_github()

安装来自github的包;

#实例:

代码语言:txt
复制
install.packages("tidyr")
install.packages('BiocManager')
BiocManager::install("ggplot2")
install.packages('devtools')
devtools::install_github("jmzeng1314/idmap1") #括号里写作者用户名加包名

4.安装后加载

library()

require()

安装只要安装一遍,但是每次打开新的session都要重新加载;

快捷方式:将加载和使用合并,直接调用已经安装的包里的某个函数:包名::函数名();等价于先library再用(如图所示);

引用自 生信技能树小洁老师
引用自 生信技能树小洁老师

5.利用镜像实现快速下载和安装R包

CRAN的镜像可以通过tools -- global option -- packages手动设置,但是bioconductor的镜像只能通过代码设置;

代码语言:txt
复制
# 清华镜像
# 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/

options("repos"=c(CRAN="http://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/")

6.R包安装和使用的逻辑

理论上:安装包--加载包--使用包里的函数;

实际上:使用函数发现没有加载包;加载包发现没有安装;然后去安装;

安装成功的唯一标准:library()没有error

引用自 生信技能树小洁老师
引用自 生信技能树小洁老师

7.安装R包的常见疑问

-(1)提示信息

没有error就没问题;大片红色代码只是工作汇报

-(2) package not available

可能原因——

①包名写错了;

②安装命令不对口;

③本机R语言版本太旧(R语言版本99%的情况下没有问题,但总是无辜被怀疑);

④包过时了已经被剔除了(实在需要的话可以下载以后本地安装);

-(3)不存在依赖的包

引用自 生信技能树小洁老师
引用自 生信技能树小洁老师

①先把依赖的那个包安装上就能解决;

②R包之间存在复杂的依赖关系,使用A包就必须同时使用BC,B、C又依赖于D,就会一装装一堆;

-(4)依赖的包版本不够新——更新/重装

引用自 生信技能树小洁老师
引用自 生信技能树小洁老师

①重装一下需要的包;

update.packages()会更新所有的包;

实例&解决方法

-(5)网络问题

报错关键词: connection / internet / url / 404 / http/download;

解决办法:换个网络/换个镜像;

-(6)软件权限不够

报错关键词:not writable / permission denied

解决办法:用管理员权限打开/设置管理员权限

-(7)?????

中文用户名的问题,可以修改环境变量

安装问题小结

引用自 生信技能树小洁老师
引用自 生信技能树小洁老师

8.R包的使用场景

-(1)什么时候会需要用到R包——某些流程代码用到某个包;

-(2)学绘图——用到ggplot2;

-(3)大部分包里的函数规律一致,少部分会有自己的特殊语法(如ggplot2);

-(4)学习R包——快速查看帮助文档/找R包的帮助界面/搜索引擎;

代码语言:txt
复制
?seq  #快速查看函数帮助文档

library(stringr)
browseVignettes("stringr")   #在线教程

-(5)关于ls: 列出环境里的每一个变量,也可以用于列出一个包里有什么函数/数据

ls("package:stringr")

9.补充:R中的各个符号

反复强调:文件名称必须带引号,且在能够识别文件名称的函数括号里面、实际参数的位置。

引用自 生信技能树小洁老师
引用自 生信技能树小洁老师

打好基础知识再也不在安装R包的时候被拦住!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本节思维导图
  • 1.函数与参数
    • -(1)形式参数、实际参数、默认参数
      • -(2)写函数的函数
        • -(3)实例/复习绘图函数plot()
          • -练习4-1
          • 2.R包(R package)介绍
          • 3.怎么安装R包
            • -(1) install.packages()
              • -(2)BiocManager::install()
                • -(3)devtools::install_github()
                • 4.安装后加载
                • 5.利用镜像实现快速下载和安装R包
                • 6.R包安装和使用的逻辑
                • 7.安装R包的常见疑问
                  • -(1)提示信息
                    • -(2) package not available
                      • -(3)不存在依赖的包
                        • -(4)依赖的包版本不够新——更新/重装
                          • -(5)网络问题
                            • -(6)软件权限不够
                              • -(7)?????
                                • 安装问题小结
                                • 8.R包的使用场景
                                • 9.补充:R中的各个符号
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档