程序包
下载 安装
install.packages("包名") #安装一个包
install.packages(c("包名1","包名2",……)) #安装多个包
当然下载包也可以先下载到本地再进行安装
例如,从CRAN https://cran.r-project.org/网站上下载R的.gz压缩包到本地,再安装;
install.packages("路径+文件名")
同样的也可以在Github上下载zip文件,解压,setwd()进入解压后的文件夹,安装
devtools::install_local()
载入使用
library(包名)
常用资源
CRAN资源,是目前最常用的R程序包发布站点
install.packages("ggplot2")
Bioconductor资源,是生物信息学相关的R语言包,发布网点 https://www.bioconductor.org/
install.packages("BiocManager") #先安装BiocManager包
BiocManager::install("GenomicFeatures")#再调用BiocManager包里的install函数安装相应的R包
Github资源,这个应该就不用说了吧,全球最大的开源代码分享社区,部分的R包会分享在这个网站上
#方式一:devtools
install.packages("devtools")#先安装devtools包
devtools::install_github("github的用户名/包名")#在调用上包里的install_github函数安装
#方式二:remotes
install.packages("remotes")#先安装remotes包
remotes::insall_github("github的用户名/包名")#再调用remotes包里的install_github函数安装
基础语法
-
getwd() 获取当前路径
-
typeof() 查看数据类型
-
x%in%y 成员运算符 判断元素是否属于某一向量
-
toupper() 将字符串内的字母转成大写
-
tolower() 将字符串内的字母转成小写
-
paste(a,b,sep=“”) 字符串连接
-
range() 返回向量中的最值,digits设置保留位数
-
prod() 计算向量连乘的积
-
which.min(x) 返回向量x中最小值索引
-
numeric(n) 返回n个0,组成一个向量
-
sort() 排序,默认升序
-
order() sort()排序后对应的序号,位置序号
-
rank(x) x中每个元素大小排名
-
unique() 去重
-
union(x,y) 向量x,y的并集
-
intersect(x,y) 向量x,y的交集
-
setdiff(x,y) 向量x中有,y没有的
-
identical(x,y) 判断向量x与y是否相等
-
grep(筛选条件,x数据来源,ignore.case=T/F是否忽略大小写)
-
dim(x) 如dim(x)<-c(4,5),自动生成一个四行五列的矩阵;dim(x)<-c(4,5,2),生成一个含有2个四行五列矩阵的数组
因为自己不太熟练,这里重点说一下下面这些,
向量中的元素为同一类型
矩阵是二维,数组维度可以大于二,可以理解为多个矩阵
矩阵
matrix(元素,nrow=行数,ncol=列数,byrow=T/F默认按列填充,dimnames=list(行名,列名))
矩阵中常用的函数
- cbind() 按列合并,增加列
- rbind() 按行合并,增加行
- rowSums() 每行和
同理 - colSums()
- rowMeans()
- colMeans()
数组
array(元素,c(每个矩阵行数,列数,矩阵个数),dimnames=list(每个矩阵的行名,列名,每个矩阵名字))
数据框
data.frame(列1,列2,列3,……)
矩阵数据框常用函数
- dim() 返回行数和列数
- t() 转置
- rev() 反转,与转置不同,反转例如全颠倒123,321
对于数据框列的操作,有时只改变一列可以使用 - transform(df,列1名=新列)
也可用矩阵的方式合并数据框,
但是数据框的合并有可能有重复行的存在,对于这些重复行
duplicated(df) #用来判断数据框中重复行,重复行会返回TRUE
df[duplicated(df),] #提取出所有仅重复的行
df[!duplicated(df),] #提取出所有非重复的行
#或者直接用
unique(df) #直接去重
另还有
-
merge(df1,df2,by="按照哪一列”,all=T/F)
T,会显示所有;F只显示重复的 -
edit() 可生成表格
列表
列表是R数据类型中最复杂的一种,无行列之分(划分区类)
list(name1=object1,name2=object2,name3=object3……)
object可以是向量、矩阵、数据框,甚至是另一个列表
因子
factor( 元素,levels=c(“”,“”,……))
另外说一下日期
R中生成时间序列用
ts(数据x, start=c(开始年份,月份),end=c(结束年份,月份),freauency=)
这里的freauency是一年技术的频率,一般写为4,按季度;或者是12,按月份。
数据的读写与存储
读取txt文件
read.table(f,header=T/F,seq=“”,……)
读取csv文件
read.csv(),readr包里的read_csv()读取速度更快
读取excel文件
转化为csv
或 使用剪贴板,再excel中选中区域,在R中键入命令read.delim(“clipboard”),如果复制的区域不含列名,应加上header=F
或使用别的包 openxlsx::read.xlsx()
本人一般直接转化为csv
读取文件也可
install.packages(“data.table”)
data.table::fread(f,skip=跳过的行数,data.table=F)
可用于读取大文件,速度快,支持读取.gz,.bz2文件,不需解压,需要安装R.utils包,默认读取后的类型为data.table和data.frame()
想载入大数据例如数据库时
下载R的RODBC包,这个包为数据库的连接提供了多种接口,若使用某种数据库,需加载某种与ODBC包相连的包才可以使用,例如连接MySQL就加载RMySQL包即可使用。
写入文件
write.table(),写入txt
write.csv()
write.xlsx()
(学习用,侵权删)
保存
setwd()定位路径 save(文件,file=文件名)
load()
清除缓存变量
rm()
rm(list=ls()) 所有变量都被删除
补一句:R中的排序第一个就是1,不想python那样取值开始排序记为0