感谢生信技能树小洁老师
新建一个项目
在开始一项新的工作时,在R studio中新建R project(.Rproj),指定Directory名称以及工作目录(所有将要用到的脚本以及文件,请放在工作目录下)
新建脚本R script
打开脚本时如果出现乱码,File-Reopen with encoding-UTF8
脚本运行方式
逐行运行,快捷键ctrl+enter
脚本中#为添加注释,R自动忽略#右侧内容
数据类型与向量
数据类型
数值型numeric:1、2
字符型character:“a”、“12”
逻辑型logical:TRUE、FALSE、NA (请严格区分大小写)
判断数据类型
class()
比较运算的结果为逻辑值
<,>,<=,>=,==,!=
多个逻辑条件的连接可以用 &与,|或,非!
!4>5 TRUE
数据类型的判断与转化
> is.numeric(4)
[1]TRUE
>as.numeric("4")
[1]4
数据结构
1、向量vector
2、数据框data.frame
3、矩阵matrix
4、列表list
向量生成
#(1)用 c() 结合到一起
c(2,5,6,2,9)
c("a","f","md","b")
#(2)连续的数字用冒号“:”
1:5
#(3)有重复的用rep(),有规律的序列用seq(),随机数用rnorm
rep("gene",times=3)
seq(from=3,to=21,by=3)
rnorm(n=3)
#(4)通过组合,产生更为复杂的向量。
paste0(rep("gene",times=3),1:3)
[1] "gene1" "gene2" "gene3"
> paste(rep("gene"),1:3)
[1] "gene 1" "gene 2" "gene 3"
> paste("gene",1:3,sep="")
[1] "gene1" "gene2" "gene3"
数据类型转化的优先顺序
字符型>数值型>逻辑型
> c(1,TRUE,NA)
[1] 1 1 NA
> c(1,2,"a")
[1] "1" "2" "a"
对单个向量进行操作
赋值:=,<- 均可
#初级统计
max(x) #最大值
min(x) #最小值
mean(x) #均值
median(x) #中位数
var(x) #方差
sd(x) #标准差
sum(x) #总和
重点区分
x%in%y x的元素是否在y中
==和%in%
对两个向量进行操作
#交集、并集、差集
intersect(x,y)
union(x,y)
setdiff(x,y)
setdiff(y,x)
循环补齐
当两个向量长度不同时,短的自动补齐长的
> x = c(1,3,5,6,2)
> y = c(3,2,5)
> x == y
[1] FALSE FALSE TRUE FALSE TRUE
Warning message:
In x == y : longer object length is not a multiple of shorter object length
向量取子集
#根据逻辑值取子集
x[x==10]
x[x<12]
x[x %in% c(9,13)]
# 根据位置取子集,中括号内必须是一个向量
x[4]
x[2:4]
x[c(1,5)]
x[-4]
x[-(2:4)]
向量匹配排序
match函数
y[match(x,y)] # y按照x的顺序重新排序
网友评论