R語言清空環(huán)境所有變量
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)連續(xù)的數(shù)字用冒號“:”
1:5
#(3)有重復的用rep(),有規(guī)律的序列用seq(),隨機數(shù)用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.將兩種不同類型的數(shù)據用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的倍數(shù)沪蓬,答案是
#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) #規(guī)范的賦值符號Alt+減號
x
#賦值+輸出同步運行
x <- c(1,3,5,1);x
(x <- c(1,3,5,1))
#(2)簡單數(shù)學計算
x+1
log(x)
sqrt(x)
#(3)根據某條件進行判斷,生成邏輯型向量
x>3
x==3
#(4)初級統(tǒng)計
max(x) #最大值
> max(x)
[1] 5
min(x) #最小值
> min(x) #最小值
[1] 1
> mean(x) #均值
[1] 2.5
> median(x) #中位數(shù)
[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) #重復值統(tǒng)計
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)數(shù)學計算
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語言中的函數(shù)用于查找在第一個對象中但不在第二個對象中的元素盐茎。
> 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] 除了第四個以外的數(shù)
[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.用函數(shù)計算向量長度
> 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.用向量取子集的方法,選出除倒數(shù)第2個以外所有的基因名。
> x[-5]
[1] "ACTR3B" "ANLN"? "BAG1"? "BCL2"? "RAB"? ? "ABCT"? "ANLN"?
[8] "BAD"? ? "BCF"? ? "BARC7"? "BALV"?
# 4.用向量取子集的方法,選出除倒數(shù)第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個隨機數(shù): rnorm(n=100,mean=0,sd=18)
z = rnorm(n=100,mean=0,sd=18)
#將小于-2的統(tǒng)一改為-2,將大于2的統(tǒng)一改為2
z[z< -2] <- -2
z[z>2] <- 2
# 1.兩個不同類型的向量合并在一起會怎么樣?
# R會盡可能轉換為相同類型數(shù)據窑业,見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)]