生成隨機(jī)數(shù)部分原帖地址:https://zhuanlan.zhihu.com/p/72859263
1. 取子集
data=read.table("file.txt",header=T)
data_part1=subset(data,Class=="A"|Class=="B")
data_part2=subset(data,Class=="A"&Group=="B")
2. 初始化一個(gè)空矩陣
newdata=matrix(nrow=10,ncol=5)
colnames(newdata)=c("ID","Gene","Group","Class","FPKM")
a=matrix(c(1,2,3,4,5,6,7,8,9,10),nrow=5,ncol=2)
a= 1 6
2 7
3 8
4 9
5 10
a=c(rep(0,5))
a=0 0 0 0 0
3. for循環(huán)
x=1:5
y=3:5
line=0
for (i in 1:5) {
for (j in 1:3) {
line=line+1;
number1=x[i];
number2=y[j];
if (number1>number2 | number1<number2) {
print(c(line,"no",x[i],y[j],"------------"));
}
else {
print(c(line,"yes",x[i],y[j],"------------"));
}
}
}
4. T檢驗(yàn)
ttest=t.test()
5. 正態(tài)分布
df=data$Class
pnorm=pnorm(df,mean(df),sd(df))
6. 合并數(shù)據(jù)
#merge合并兩個(gè)數(shù)據(jù)框踱葛,標(biāo)識(shí)共同的列或行
merge(df1,df2,by="Gene")
merge(df1,df2,by.x="ID1",by.y="ID2")
#cbind根據(jù)列合并,合并所有列
cbind(df1,df2)
#rbind根據(jù)行合并光坝,合并所有行
rbind(df1,df2)
#paste
x=1:10
y=paste("k",x,sep="")
y=k1 k2 k3 ... k10
7. 產(chǎn)生空數(shù)組/矩陣
#做一個(gè)空矩陣
newmat=matrix(ncol=2,nrow=3)
#做一個(gè)空數(shù)組
arr=seq(from=0,to=0,length.out=10)
8.基礎(chǔ)計(jì)算公式
#常規(guī)除法
35/10
#取整數(shù)
35 %/% 10
#求余數(shù)
35 %% 10
#向下取整
floor(2.3)
#向上取整
ceiling(2.3)
#四舍五入取整
round(2.4)
[1] 2
round(2.5)
[1] 3
9.生成隨機(jī)數(shù)/數(shù)據(jù)
#runif
runif(n,min,max)
隨機(jī)生成n個(gè)在min和max之間的隨機(jī)數(shù)
#:
1:10
1到10的等差序列
#seq
seq(x,y,z)
x=起點(diǎn)尸诽,y=終點(diǎn),z=等間距
seq(from=x,to=y,length=z)
生成長(zhǎng)度為z的序列盯另,范圍從x到y(tǒng)
#rep
rep(1:3,3)
將1 2 3重復(fù)3次,1 2 3 1 2 3 1 2 3
rep(1:3,each=3)
將1 2 3中的每一個(gè)重復(fù)3次,1 1 1 2 2 2 3 3 3
#factor
x <- c("Man", "Male", "Man", "Lady", "Female")
xf <- factor(x, levels = c("Male", "Man" , "Lady", "Female"),
labels = c("Male", "Male", "Female", "Female"))
變成兩類標(biāo)簽
#gl
gl(3,5,length=15,label=c('a','b','c'))
a a a a a b b b b b c c c c c
gl(k,n,length=,label=)
構(gòu)造一個(gè)因子序列性含。k為水平數(shù),n為每個(gè)水平連續(xù)出現(xiàn)的次數(shù)鸳惯,length為整個(gè)序列的長(zhǎng)度商蕴,label為因子標(biāo)簽
#sample隨機(jī)取樣
sample(x, size, replace = FALSE, prob = NULL)
x被抽樣數(shù)據(jù);size抽樣個(gè)數(shù)芝发;replace = FALSE/TRUE無(wú)重復(fù)抽樣/重復(fù)抽樣绪商;prob挑選概率(x與prob對(duì)應(yīng))
sample(1:100, 20, replace=FALSE)
[1] 71 83 24 75 35 51 9 16 99 39 68 74 85 60 44 98 20 2 87 21
sample(letters, 20, replace=FALSE) #無(wú)重復(fù)
[1] "e" "a" "l" "c" "r" "h" "s" "z" "i" "d" "j" "g" "o" "f" "n" "y" "b" "t"
[19] "q" "m"
x = c(1:20)
sample(x)#隨機(jī)排列x
sample(c(0,1), 10, replace=TRUE, prob=c(0.2, 0.8))
#分別以0.2和0.8的概率抽取0和1
[1] 1 1 1 1 1 1 1 1 0 0
#strsplit(x) 字符分割
strsplit(x, split, fixed = FALSE, perl = FALSE)
根據(jù)split將x分割,若split=“”辅鲸,則將x分為單個(gè)字符
strsplit("split","", fixed = FALSE, perl = FALSE)
[1] "s" "p" "l" "i" "t"
#默認(rèn)split為正則表達(dá)式格郁,可使用fixed=TRUE,對(duì)split做精確匹配
#當(dāng)perl=TRUE時(shí)独悴,使用perl的正則表達(dá)式規(guī)則
#當(dāng)分隔符為?, +, {, |, (, )時(shí)例书,要使用'\\'來(lái)消除特殊含義
x <- "a5aa646a4d9a4da1d3a49d79a41d1da"
strsplit(x, "\\d") #根據(jù)每個(gè)數(shù)字分割
strsplit(x, "[:alnum:]") #任何一個(gè)字母或數(shù)字(等價(jià)于[a-ZA-Z0-9])
#生成擬合概率函數(shù)的數(shù)據(jù)
統(tǒng)一的形式:前綴+分布函數(shù)名
d 表示密度函數(shù)(density);p 表示分布函數(shù)(生成相應(yīng)分布的累積概率密度函數(shù))刻炒;q 表示分位數(shù)函數(shù)决采,能夠返回特定分布的分位數(shù)(quantile);r 表示隨機(jī)函數(shù)坟奥,生成特定分布的隨機(jī)數(shù)(random)
rnorm(100, mean=0, sd=1) #生成100個(gè)服從標(biāo)準(zhǔn)正態(tài)分布的序列
以此類推:
rexp(n, rate=1) #指數(shù)
rgamma(n, shape, rate=1, scale=1/rate) #r 分布
rpois(n, lambda) #泊松
rt(n, df, ncp) #t 分布
rf(n, df1, df2, ncp) #f 分布
rbinom(n, size, prob) #二項(xiàng)分布
rweibull(n, shape, scale=1) #weibull 分布
rbata(n, shape1, shape2) #bata 分布runif(n,min=0,max=1) #均勻分布
#生成離散隨機(jī)變量(借助for循環(huán))
p1<-0.15
p2<-0.2
p3<-0.3
p4<-0.35
disrand<-function(i){
u<-runif(1,0,1) #生成0-1之間的一個(gè)隨機(jī)數(shù)
if(u<p1) x <- 1 else #如果隨機(jī)數(shù)u小于p1
if(u<p2+p2) x <- 2 else #如果隨機(jī)數(shù)u大于等于p1且小于p2+p2
if(u<p3+p2+p1) x <- 3 else
x <- 4
return(x) #返回x
}
Xa <- rep(NA,100) #生成一個(gè)有100個(gè)NA的向量树瞭,用于存放生成的隨機(jī)數(shù)
for (i in 1:100)
Xa[i] <- disrand(i)
Xa
> Xa
[1] 1 1 2 3 2 4 1 1 2 4 4 2 2 2 2 4 2 4 4 4 3 2 4 1 1 1 2 4 1 3 1 3 4 2 4 2
[37] 2 4 4 1 4 3 2 4 3 4 3 3 3 4 4 3 4 2 2 1 4 4 2 1 4 2 4 2 4 1 2 2 1 4 4 3
[73] 4 4 4 4 4 2 4 1 4 3 4 3 4 1 4 4 4 2 3 4 3 2 3 2 4 4 1 4
10.R語(yǔ)言中正則表達(dá)式轉(zhuǎn)義字符
類型 | 寫法 | 意義 |
---|---|---|
空白元字符 | [\b] | 回退(并刪除)一個(gè)字符(backspace) |
空白元字符 | \f | 換頁(yè)符 |
空白元字符 | \n | 換行符 |
空白元字符 | \r | 回車符 |
空白元字符 | \t | 制表符(tab) |
空白元字符 | \v | 垂直制表符暂幼。注:\r\n是windows所用的文本行結(jié)束符,Unix和Linux只是用一個(gè)換行符來(lái)結(jié)束一個(gè)文本行 |
匹配數(shù)字與非數(shù)字 | \d | 任何一個(gè)數(shù)字字符移迫,等價(jià)于[0-9] |
匹配數(shù)字與非數(shù)字 | \D | 任何一個(gè)非數(shù)字字符旺嬉,等價(jià)于^[0-9] |
匹配字母\非字母與數(shù)字 | \w | 任何一個(gè)字母數(shù)字字符(大小寫均可以)或下劃線字符(等價(jià)于[a-zA-Z0-9]) |
匹配字母\非字母與數(shù)字 | \W | 任何一個(gè)非字母數(shù)字或下劃線字符(等價(jià)于[^a-zA-Z0-9]) |
匹配空白字符 | \s | 任何一個(gè)空白字符(等價(jià)于[\f\n\r\t\v]) |
匹配空白字符 | \S | 任何一個(gè)非空白字符(等價(jià)于[^\f\n\r\t\v]) |
POSIX字符類 | [:alnum:] | 任何一個(gè)字母或數(shù)字(等價(jià)于[a-ZA-Z0-9]) |
POSIX字符類 | [:alpha:] | 任何一個(gè)字母(等價(jià)于[a-ZA-Z]) |
POSIX字符類 | [:blank:] | 空格或制表符(等價(jià)于[\t ]) 注:t后面有一個(gè)空格 |
POSIX字符類 | [:cntrl:] | ASCII控制字符(ASCII 0到31,再加上ASCII 127) |
POSIX字符類 | [:digit:] | 任何一個(gè)數(shù)字(等價(jià)于[0-9]) |
POSIX字符類 | [:graph:] | 和[:print:]一樣厨埋,但不包括空格 |
POSIX字符類 | [:lower:] | 任何一個(gè)小寫字母(等價(jià)于[a-z]) |
POSIX字符類 | [:print:] | 任何一個(gè)可打印字符 |
POSIX字符類 | [:punct:] | 既不屬于[:alnum:]邪媳,也不屬于[:cntrl:]的任何一個(gè)字符 |
POSIX字符類 | [:space:] | 任何一個(gè)空格字符,包括空格(等價(jià)于[f\n\r\t\v ] 注:v后面有一個(gè)空格 |
POSIX字符類 | [:upper:] | 任何一個(gè)大寫字母(等價(jià)于[A-Z]) |
POSIX字符類 | [:xdigit:] | 任何一個(gè)十六進(jìn)制數(shù)字(等價(jià)于[a-fA-F0-9]) |
其他 | . | 可以匹配任何單個(gè)的字符字母數(shù)字甚至.字符本身荡陷。不能匹配換行 |
其他 | "\\" | 轉(zhuǎn)義字符雨效,如果要匹配就要寫成"\\(\\)" |
其他 | | | 表示可選項(xiàng),即豎線前后的表達(dá)式任選一個(gè) |
其他 | ^ | 取非匹配 |
其他 | $ | 放在句尾废赞,表示一行字符串的結(jié)束 |
其他 | () | 提取匹配的字符串徽龟,(\s*)表示連續(xù)空格的字符串 |
其他 | [] | 選擇方括號(hào)中的任意一個(gè)(如[0-2]和[012]完全等價(jià),[Rr]負(fù)責(zé)匹配字母R和r) |
其他 | {} | 前面的字符或表達(dá)式的重復(fù)次數(shù)唉地。如{5,12}表示重復(fù)的次數(shù)不能小于5据悔,不能多于12,否則都不匹配 |
其他 | * | 匹配零個(gè)或任意多個(gè)字符或字符集合耘沼,也可以沒有匹配 |
其他 | + | 匹配一個(gè)或多個(gè)字符极颓,至少匹配一次 |
其他 | ? | 匹配零個(gè)或一個(gè)字符 |
11. 分割字符
strsplit(字符,要分割的標(biāo)識(shí)群嗤,fixed = FALSE, perl = FALSE, useBytes = FALSE)
fixed=F菠隆,用正則表達(dá)
perl=F,是否用perl的表示方法
useBytes=T狂秘,一個(gè)字節(jié)一個(gè)字節(jié)的比骇径,F(xiàn)是一個(gè)詞一個(gè)詞的拆