R语言清空环境所有变量
ls()
rm(list=ls())
#运行脚本:光标放在某一行,点”run”,快捷键ctrl+enter(mac:command+enter)
#向量的生成,对单个/两个向量进行的操作,取子集,元素修改。
#####2.1.向量生成🌟#####
#(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)
简写: paste0("gene",1:3)
练习2-2: 向量生成
# 1.将两种不同类型的数据用c()组合在一起,看输出结果
c(1:8,"gene")
[1] "1" "2" "3" "4" "5" "6" "7" "8" "gene"
> c(1:8,TRUE)
[1] 1 2 3 4 5 6 7 8 1
# 2.生成1到30之间所有4的倍数,答案是
#4,8,12,16,20,24,28
seq(from=4,to=28,by=4)
# 3.生成sample4,sample8,sample12…sample28
# 提示:paste0
paste0("sample",seq(from=4,to=28,by=4))
#####2.2对单个向量进行的操作####
#(1)赋值给一个变量名
x = c(1,3,5,1) #随意的写法
x
x <- c(1,3,5,1) #规范的赋值符号Alt+减号
x
#赋值+输出同步运行
x <- c(1,3,5,1);x
(x <- c(1,3,5,1))
#(2)简单数学计算
x+1
log(x)
sqrt(x)
#(3)根据某条件进行判断,生成逻辑型向量
x>3
x==3
#(4)初级统计
max(x) #最大值
> max(x)
[1] 5
min(x) #最小值
> min(x) #最小值
[1] 1
> mean(x) #均值
[1] 2.5
> median(x) #中位数
[1] 2
> var(x) #方差
[1] 3.666667
> sd(x) #标准差
[1] 1.914854
> sum(x) #总和
[1] 10
> 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
#####2.3.对两个向量进行的操作#####
x = c(1,3,5,1)
y = c(3,2,5,6)
#(1)逻辑比较,生成等长的逻辑向量
x == y
> x == y
[1] FALSE FALSE TRUE FALSE
x %in% y #x中的元素在y中吗
> x %in% y
[1] FALSE TRUE TRUE FALSE
#(2)数学计算
x + y
> x + y
[1] 4 5 10 7
#(3)“连接“
paste(x,y,sep="")
> paste(x,y,sep=":")
[1] "1:3" "3:2" "5:5" "1:6"
#(4)交集、并集、差集
intersect(x,y)
> intersect(x,y)
[1] 3 5
union(x,y)
> union(x,y)
[1] 1 3 5 2 6
setdiff(x,y) #setdiff()R语言中的函数用于查找在第一个对象中但不在第二个对象中的元素。
> setdiff(x,y)
[1] 1
setdiff(y,x)
> setdiff(y,x)
[1] 2 6
#当两个向量长度不一致
> x == y
[1] FALSE FALSE TRUE FALSE TRUE
> #根据逻辑值取子集
x <- 8:12
> x[x==10]
[1] 10
> x[x<12]
[1] 8 9 10 11
> x[x %in% c(9,13)]
[1] 9
> #根据位置取子集
> x[4]
[1] 11
> x[2:4]
[1] 9 10 11
> x[c(1,5)]
[1] 8 12
> x[-4] 除了第四个以外的数
[1] 8 9 10 12
> x[-(2:4)]
[1] 8 12
####2.5.修改向量中的某个/某些元素:取子集+赋值
> x[4] <- 40
> x
[1] 8 9 10 40 12
> x[x>10] <- 10
> x
[1] 8 9 10 10 10
#### 2.6 简单向量作图
k1 = rnorm(12);k1
k2 = rep(c("a","b","c","d"),each = 3);k2
plot(k1)
boxplot(k1~k2)
> k1 = rnorm(12);k1
[1] -1.11243080 0.39807970 0.64010900 -1.20021492 -0.35768545
[6] 0.12871512 -0.36092576 0.41087563 -0.65320149 -1.96983669
[11] 0.03882537 -1.49252171
> k2 = rep(c("a","b","c","d"),each = 3);k2
[1] "a" "a" "a" "b" "b" "b" "c" "c" "c" "d" "d" "d"
plot(k1)
boxplot(k1~k2)
# 1.将基因名"ACTR3B","ANLN","BAG1","BCL2","BIRC5","RAB","ABCT","ANLN","BAD","BCF","BARC7","BALV"组成一个向量,赋值给x
> x <- c("ACTR3B","ANLN","BAG1","BCL2","BIRC5","RAB","ABCT","ANLN","BAD","BCF","BARC7","BALV")
> x
[1] "ACTR3B" "ANLN" "BAG1" "BCL2" "BIRC5" "RAB" "ABCT"
[8] "ANLN" "BAD" "BCF" "BARC7" "BALV"
# 2.用函数计算向量长度
> length(x)
[1] 12
# 3.用向量取子集的方法,选出第1,3,5,7,9,11个基因名。
> x[seq(from=1,to=11,by=2)]
[1] "ACTR3B" "BAG1" "BIRC5" "ABCT" "BAD" "BARC7"
# 4.用向量取子集的方法,选出除倒数第2个以外所有的基因名。
> x[-5]
[1] "ACTR3B" "ANLN" "BAG1" "BCL2" "RAB" "ABCT" "ANLN"
[8] "BAD" "BCF" "BARC7" "BALV"
# 4.用向量取子集的方法,选出除倒数第2个以外所有的基因名。
> x[-(length(x)-1)]
[1] "ACTR3B" "ANLN" "BAG1" "BCL2" "BIRC5" "RAB" "ABCT"
[8] "ANLN" "BAD" "BCF" "BALV"
# 5.用向量取子集的方法,选出出在c("ANLN", "BCL2","TP53")中有的基因名。
# 提示:%in%
> x[x%in%c("ANLN", "BCL2","TP53")]
[1] "ANLN" "BCL2" "ANLN"
# 6.修改第6个基因名为"a"并查看是否成功
> x[6] <- "a";x
[1] "ACTR3B" "ANLN" "BAG1" "BCL2" "BIRC5" "a" "ABCT"
[8] "ANLN" "BAD" "BCF" "BARC7" "BALV"
#7.生成100个随机数: rnorm(n=100,mean=0,sd=18)
z = rnorm(n=100,mean=0,sd=18)
#将小于-2的统一改为-2,将大于2的统一改为2
z[z< -2] <- -2
z[z>2] <- 2
# 1.两个不同类型的向量合并在一起会怎么样?
# R会尽可能转换为相同类型数据,见2-2 回答。
# 2.如何将两个向量合到一起,组成一个长向量?
> a <- c(1,2,3)
> b <- c(4,5,6)
> c(a,b)
[1] 1 2 3 4 5 6
# 3.如何在向量首/尾/中间某位置增加一个元素?
a <- c(0,a)# 首
b <- c(b,7) # 尾
n=2 # 二号位
c(a[1:n-1],66,a[n:length(a)])
# 4.如果向量x和y内容一致但顺序不一致,如何按照x的顺序排列y?
x <- c(1,3,2)
y <- c(3,2,1)
y[match(x,y)]