R语言对于我们生信人员来讲,再熟悉不过,然而任何一门语言想要学好,必须经过常年的日积月累才可以做到,在这里,我列举R中常用的函数的用法, 供大家学习。
1.序列函数seq
用法: seq(form,to,length.out(or by))
seq(from=3,to=27,by=3)
[1] 3 6 9 12 15 18 21 24 27
seq(from=1,to=3,length=3)
[1] 1 2 3
2、重复函数rep
用法:rep(x,times,each)
rep(x=1,times=2)
[1] 1 1
rep(x=c(2,3),times=2)
[1] 2 3 2 3
rep(x=c(2,3) ,each=2)
[1] 2 2 3 3
3.排序函数sort
用法:sort(x,decreasing=T/F)
sort(x=c(1,3,2),decreasing=T)
[1] 3 2 1
4.长度函数length
length(x=c(1,2,3,4))
[1] 4
5.prob所有元素向量相乘
prob(c(1,2,3,4))
[1] 24
6.dim 矩阵维度,nrow行数,ncol列数
data=rbind(c(1,3,4),5:3,c(100,20,90),11:13)
dim(data)
4 3
nrow(data)
4
ncol(data)
3
dim(data)[2]
3
7.rbind行合并和cbind列合并
rbind(1:3,4:6)#行合并
1 2 3
4 5 6
cbind(1:3,4:6)
1 4
2 5
3 6
8.t转置
data=rbind(c(1,2,3),c(4,5,6))
data
1 2 3
4 5 6
t(data)
1 4
2 5
3 6
9.which确认TRUE的位置索引
which(c(T,T,T,F,F))
1 2 3
which(x=c(-1,1,2)>0)
2 3
data=c(-1,1,2,3,4,5)
data[which(data>0)]
1 2 3 4 5
data[-which(data>0)]
-1
10.cat 和 paste连接
cat(1,2,3,4)
1 2 3 4
#直接返回到控制台
paste(1,2,3,4)
'1 2 3 4'
#将内容连接后,返回最终的字符串作为可用的R语言对象
#这两个函数有一个可选参数sep
paste(c(1,2,4),'a',sep='+++')
"1+++a" "2+++a" "4+++a"#返回的是字符串
paste(c(1,2,3,4),rep(6,times=4),sep='')
"16" "26" "36" "46"
11.R语言的循环
#for 循环
for (条件){
do any code in here
}
#while循环
while(条件){
do any code in here
}
12.apply函数家族
apply(data,MAGERN=1/2,FUN)
#1表示行,2表示列,3表示层,4表示块
lapply(X, FUN, ...)
#通过对x的每一个元素运用函数,生成一个与元素个数相同的值列表
#X表示一个向量或者表达式对象,其余对象将被通过as.list强制转换为list
#例:
x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE,FALSE,FALSE,TRUE))
lapply(x,mean)
$a
[1] 5.5
$beta
[1] 4.535125
$logic
[1] 0.5
sapply(X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)
#X表示一个向量或者表达式对象,其余对象将被通过as.list强制转换为list
# simplify 逻辑值或者字符串,如果可以,结果应该被简化为向量、矩阵或者高维数组。必须是命名的,不能是简写。默认值是TRUE,若合适将会返回一个向量或者矩阵。如果simplify=”array”,结果将返回一个阵列。
sapply(k, paste,USE.NAMES=FALSE,1:5,sep="...")
[,1] [,2] [,3]
[1,] "a...1" "b...1" "c...1"
[2,] "a...2" "b...2" "c...2"
[3,] "a...3" "b...3" "c...3"
[4,] "a...4" "b...4" "c...4"
[5,] "a...5" "b...5" "c...5"
13.编写函数
function(){
}
eg:
zhao=funciton(x,y){
x+y
}
eg:
zhao=funciton(x=3,y){ # x设为默认值
x+y
}