随笔,生信技能树学习笔记 Day 3

函数stringr功能

str_length() #测定字符串长度

str_split() #拆分字符串

str_sub() #按照位置提取字符

str_detect() #检测是否包含某个字符

str_replace() #替换首次出现的某个字符

str_replace_all() #替换所有字符

str_remove() 删除字符

str_remove_all() 删除所有字符

玩转数据框

1. arrange() #排序

arrange(test, Sepal.Length) #从小到大

arrange(test, desc(Sepal.Length)) #从大到小 desc()

2. distinct,数据框按照某一列去重复

distinct(test,Species,.keep_all = T) #.keep_all 保留全部列

3. mutate,数据框新增一列

mutate(test, new = Sepal.Length * Sepal.Width) #没有赋值就没有发生过

test = mutate()

4. 筛选

filter() #筛选行

select() #筛选列

逻辑算法

① 管道符号快捷键

shift + control + M 

② 条件代码

if(条件,一个逻辑值){条件正确执行操作}else{条件错误进行的操作}

if(条件,一个逻辑值){条件正确执行操作}else if(条件){第二个条件正确进行的操作}

用上述方法就可以同时实现多个条件

ifelse条件函数

ifelse(条件, 条件成立输出, 条件不成立输出)

tips:ifelse()+srt_detect() 分组王炸!

t1 = str_detect(samples, "tumor") # 检测样本名中是否有tumor

ifelse(t1, "tumor', "normal") #如果样本名中包含tumor则输出tumor,反之则输出normal

data[, 4] = ifelse(t1, "tumor', "normal") #在data矩阵中增加一列,内容为分组情况

ifelse()中条件不成立输出的一栏可以再增加ifelse()代码,进行多个条件判断

③ for循环 for (i in x){执行操作}

两种循环方式

(1) 元素循环

for(i in x){s= s+i}

(2)下标循环

for (i in 1:length(x)){s= s+x[[i]]}

元素循环无法保存,下标循环可以保存;注意要对for循环结果进行保存

for循环中取子集需要用两个[]

PS: 判断两个数据是否一致 identical(x1, x2),返回True则数据完全一致

正文完