Ruizheng 的学习笔记
感谢 生信技能树 小洁老师
数据框取子集(一个、一行、一列)
选一个 用坐标
df[1,3]
选一行/一列 左边是行,右边是列
df[2,] ### 逗号表示分割维度
df[,2]
根据行名或列名 选择
当行数和列数很多时,这个操作就很有用。
向量也可以根据“名字”提取。
nn = c("name", "gene")
df[,nn]
去掉最后一列
df[,-col(df)]
提取列的常用操作
df$exp
数据框编辑
改一个格
df[3,3] <- 5
改一整列 / 新增一列
df$exp <- c(12,23,50)
修改行名和列名
rownames(df) <- c("r1", "r2", "r3")
数据框的两种显示形式
- 在environment里面直接点名字,查看预览视图,相当于View(df)
- 控制台显示形式(纯文本)
数据框进阶
- 行数较多的数据框可以截取前/后几行查看
head(iris)
tail(iris)
head(iris, 3)
- 行列数都多的数据框可取前几行前几列查看
这种方法不经过赋值,只是输出、查看
iris[1:3, 1:3]
3. 查看每一列的数据类型和具体内容
str()
str(iris)
基础学习默认不要转成因子,避免因子带来的麻烦
options(stringsAsFactors = F)
4. 去除含有缺失值的行
片甲不留
na.omit(df)
仅按照某一列来去除缺失值、缺失值替换:tidyr包
5. 两个表格的连接
- 按列连接:cbind 行数相同
- 按行连接:rbind 列数相同
- 智能连接:merge() 需要有共同的列名
- 交集、并集、补集、全集等,参考dplyr包
列名不同时,用merge
merge(test1, test3, by.x = "name", by.y = "NAME")
6. 如果列名顺序错乱,如何按照指定顺序重排?
数据框列的顺序错乱,如何重排
矩阵新建和取子集
m <- matrix(1:9, nrow = 3)
矩阵不支持 $
矩阵的转置和转换
t(m)
as.data.frame(m)
矩阵画热图
pheatmap::pheatmap(m)
pheatmap::pheatmap(m, cluster_cols = F, cluster_rows = F)
列表新建和取子集
i <- list(m = matrix(1:9, nrow = 3),
df = data.frame(gene = paste0("gene",1:3), sam = paste0("sam", 4:6)),
x = c(1,3,5))
i$m
i$df
i$x
i[[2]]
删除变量
rm(l)
rm(df,m)
rm(list = ls())
清空控制台
ctrl + l
元素的名字 - names()
元素可命名,用函数names(),
可以根据名字提取子集,
向量、数据框、列表通用。
x =1:10
names(x) = letters[1:10]
x["a"]
match 有大用处 !!
colnames(y) = x$ID[match(colnames(y), x$file_name)]
identical() 用于判断两个变量是否完全相同