2022.4.5 笔记进度终于赶上了,于4.6.14:06写下的!!!
基础知识
数据框排序
这里用到sort()和order(),与取子集的知识;这里默认升序,若要讲叙, decreasing = T(两个都是)
arrange()也可以,tidyverse让代码更易读,不过这里的降序是desc()
# order 可以给向量排序,也可以给数据框排序
sort(test$Sepal.Length)
test$Sepal.Length[order(test$Sepal.Length)]
test[order(test$Sepal.Length),]
test[order(test$Sepal.Length,decreasing = T),]
# arrange,更加灵活的排序
library(dplyr)
arrange(test, Sepal.Length)
arrange(test, desc(Sepal.Length))
arrange(test, desc(Sepal.Width),Sepal.Length)
表达矩阵绘制箱型图
ggplot2()不识别行名,所以需要把行名转化为第一列:rownames_to_column()
转置的是矩阵,所以后面需要as.data.frame()
总的来说,这里需要宽变长,用到了pivot_longer()函数——新合并的列名,这一步还挺难的,得看例子才明白
连接 其实就是inner_join及其变体 以及merge()
这里指的注意的是,对于缺失值,存在全连接,半连接,反连接;以及位置的左右连接。
字符串函数
这部分昨天上课的时候,我的表现确实不好,但是没怎么理解到位啊
str_split()分出的是一个列表list,所以查看里面的元素是[[1]],双括号;以及这里的simplify = T
simplify | If FALSE, the default, returns a list of character vectors. If TRUE returns a character matrix. |
---|---|
###3.按位置提取字符串
str_sub(x,5,9)
###4.字符检测
str_detect(x2,"h")
#这里返回了等长的逻辑值向量,可以用来取子集
###5.字符串替换
str_replace(x2,"o","A") #只会替换掉一个,下面是全部替换
str_replace_all(x2,"o","A")
###6.字符删除
str_remove(x," ") #同上
str_remove_all(x," ")
条件语句与循环语句
- if(){ }
(1)只有if没有else,那么条件是FALSE时就什么都不做
if后面的括号里不支持向量;支持“T” or “F”
(2)有else :只有三个参数,第一个是生成逻辑值向量的代码,后面分别是T或F的返回值
参考如下(方便后面复制)
#### (3)多个条件
i = 0
if (i>0){
print('+')
} else if (i==0) {
print('0')
} else if (i< 0){
print('-')
}
ifelse(i>0,"+",ifelse(i<0,"-","0"))
- 循环语句
两种循环方式:
因为生成的列表;do.call()是批量操作的意思,cbind是对后面的result按列拼接;前面do.call进行批量操作了。
毕竟这里没有simplify = T 的参数了
(我觉得这个先看懂吧,离会用还是太远了)
知识补充
- 补充三个来自dplyr的函数
(需要赋值!!)(这个我还是挺经常见的)管道符的应用
- 长脚本的管理方式
截图与代码来源于生信技能树全程班中R基础班课程PPT