0%

生信学习笔记05——R语言综合(2)

专题4.字符串

字符串长度 str_length

str_length(x)  #空格也算

字符串拆分 str_split

str_split(x," ") # 取出为列表
str_split(x," ")[ [1] ] # 取出为向量

按位置提取字符 str_sub

str_sub(x,5,9) #5~9字字符

字符检测 str_detect

str_detect(x,"h")  #返回true or false
str_starts
srt_ends

字符串替换str_replace

str_replace(x,"","")
str_replace_all 

字符串删除str_remove

str_remove(x,"")
str_remove_all 

专题5.1.条件语句

if (一个逻辑值){
CODE1
}else{
CODE2
}
#ifelse函数
ifelse(x,yes,no)
ifelse(str_detect(x,"s"),"+","-") #联用可以用于分组

小作业

1.读取group数据,并从第二列中提取数据
data<- read.csv("group.csv") #注意加双引号
a<-str_split(data$title," ",simplify = T)[,4]
data$group <- a
2.把提取出的字符改为小写
data$group <- tolower(data$group)
3.加载deg.Rdata,根据a、b两列的值,按照以下条件生成向量x:
a< -1 且b<0.05,则x对应的值为down;
a>1 且b<0.05,则x对应的值为up;
其他情况,x对应的值为no
统计up、down、no各重复了多少次
x<-ifelse(deg$a < -1  & deg$b < 0.05,"down",
       (ifelse(deg$a > 1 & deg$b < 0.05,"up","no")))
deg$x <- x
table(x)
 down    no    up 
 1059 28863   853 

专题5.2.循环语句

ggplot-1

for(i in x){
CODE
}
#将结果保存
x <- c(5,6,0,3)
s = 0
result = list()
for(i in 1:length(x)){
  s=s+x[[i]]
  result[[i]] = c(x[[i]],s)
}
result
do.call(cbind,result)
do.call(rbind,result)

专题6.隐性循环

apply(x,MARGIN,FUN,...) # MARGIN 1表示行,2表示列
apply(test,2,mean)  # 对test 每一列取平均值