2020-11-19

生信技能树1,2节

第一节 R与R studio

1.创建R文件
在file新建project,其格式为X.Rproj
后续相关内容均会保存在这个project 目录下,便于管理。
2.创建脚本
在file新建script,便于保存自己的历史代码

第二节 数据类型和向量

1.数据类型分为三类
数值型 numeric 1,2.5
逻辑型 logical TRUE,FALSE,NA
字符型 character "a"
注:判断数据类型的函数:class( ),将要判断的内容写在括号里
2.逻辑型数据
(1)比较运算的结果是逻辑值
<, >, <=, >=, ==, !=
3==5 FALSE
3!=4 TRUE
(2)逻辑运算 多个逻辑条件的连接与&、或|、非!
3<5&4>5 FALSE
3<5|4>5 TRUE
!4>5 TRUE
3.数据类型的判断和转换
(1)is族函数,判断,返回值为TRUE或FALSE
is.numeric() 是否数值型数据
is.logical() 是否逻辑型数据
is.charactor() 是否字符型数据
eg.> is.numeric("4")
[1] FALSE
(2)as族函数实现数据类型之间的转换
as.numeric() 将其他数据类型转换为数值型
as.logical() 将其他数据类型转换为逻辑型
as.charactor() 将其他数据类型转换为字符型
> as.numeric("4")
[1] 4
4.多个数据如何组织
数据类型:向量,数据框,矩阵,列表


image.png

数据框约等于“表格”。
向量则是数据框单独拿出的一列,视为一个整体。
一个向量只能有一种数据类型,可以有重复值。
5.向量及后续→使用已准备好的Rproject
(1)切换Rproject
先保存脚本/变量/图片,再open project
可能遇到的情况


image.png

(2)脚本的正确打开方式:从右下角文件面板单击打开
(3)脚本打开乱码:
image.png

6.向量的生成

(1)用 c()逐一放到一起

c(2,5,6,2,9)
[1] 2 5 6 2 9
c("a","f","md","b")
[1] "a" "f" "md" "b"

(2)连续的数字用冒号”:”

1:5
[1] 1 2 3 4 5
(3)有重复的用rep(),有规律的序列用seq(),随机数用rnorm
rep("gene",times=3)
[1] "gene" "gene" "gene"
seq(from=3,to=21,by=3)
[1] 3 6 9 12 15 18 21
rnorm(n=3)
[1] -1.2882504 -0.8186668 -0.1031025
(4)通过组合,产生更为复杂的向量。
paste0(rep("gene",times=3),1:3)
[1] "gene1" "gene2" "gene3"
(5)数据类型转换的优先顺序

image.png

(6)对单个向量进行的操作

赋值给一个变量名
x = c(1,3,5,6,2) #随意的写法
x <- c(1,3,5) #规范的赋值符号
赋值+输出一起执行:(x <- c(1,3,5))
两种方法 x <- c(1,3,5);x

(7)对单个向量进行的操作

初级统计
max(x) #最大值
min(x) #最小值
mean(x) #均值
median(x) #中位数
var(x) #方差
sd(x) #标准差
sum(x) #总和
x <- c(1,3,5,1)

length(x) #长度
[1] 4
unique(x) #去重复
[1] 1 3 5
duplicated(x)
[1] FALSE FALSE FALSE TRUE
table(x) #重复值统计
x
1 3 5
2 1 1
sort(x)#从小到大排序
[1] 1 1 3 5
sort(x,decreasing = T)#从大到小排序
[1] 5 3 1 1

(8)对两个向量的操作

(8.1)逻辑比较,生成等长的逻辑向量

x = c(1,3,5,1)
y = c(3,2,5,6)
x == y
[1] FALSE FALSE TRUE FALSE
x %in% y #x的元素是否在y中
[1] FALSE TRUE TRUE FALSE
(8.2)数学计算
x + y
[1] 4 5 10 7
(8.3)连接
paste(x,y,sep=":")
[1] "1:3" "3:2" "5:5" "1:6"
(8.4)交集、并集、差集
x = c(1,3,5,1)
y = c(3,2,5,6)
intersect(x,y)
[1] 3 5
union(x,y)
[1] 1 3 5 2 6
setdiff(x,y)
[1] 1
setdiff(y,x)
[1] 2 6

(8.5)当两个向量长度不一致

x = c(1,3,5,6,2)
y = c(3,2,5)
x == y


image.png

(8.6)利用循环补齐简化代码
paste0(rep(“gene”,3),1:3)
paste0(“gene”,1:3)
[1] "gene1" "gene2" "gene3
(8.7)向量筛选(取子集)
[ ]:将TRUE对应的值挑选出来,FALSE丢弃
按照逻辑值:中括号里是与x等长的逻辑值向量
按照位置:中括号里是由x的下标组成的向量
注意:中括号里面的必须可以独立运行,里面逻辑值数必须与x长度相等


image.png

(8.8)如何修改向量中的某个/某些元素?
x =8:12;x
[1]8 9 10 11 12
x[4] <- 40#取子集11并赋值40

x[x>10] <- 10#将大于10的赋值为10

注:R语言里的修改,都要赋值,没有赋值就没有发生过

(9)简单向量作图

k1 = rnorm(12)
k2 = rep(c("a","b","c","d"),each = 3)
plot(k1)
boxplot(k1~k2)


image.png

你可能感兴趣的:(2020-11-19)