4.2.1 矩阵的数组表示 【数据结构】数组和字符串(一):矩阵的数组表示 4.2.2 特殊矩阵的压缩存储 矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。...传统的按行优先次序存储方法会浪费大量空间来存储零元素,因此采用压缩存储的方法更为合适。常见的压缩存储方法有:压缩稠密行(CSR)、压缩稠密列(CSC)、坐标列表(COO)等。 a....由于行和列都是循环链表,行表头节点 BASEROW[i] 中的 LEFT 指针循环地链接到该行最右边的非零元素,列表头节点 BASECOL[j] 中的 UP 指针循环地链接到该列最下边的非零元素。...分配行表头节点数组的内存,并将每个元素初始化为NULL。 分配列表头节点数组的内存,并将每个元素初始化为NULL。 返回指向创建的稀疏矩阵的指针。 2....释放列表头节点数组的内存。 释放稀疏矩阵结构体的内存。 3.
跟我念三遍:row是横排成行;colum是纵队为列;rownames(df1) #看所有行名colnames(df1) #看所有列名3.数据框取子集-(1)按列名取列——【最重要】df1$score...-(4)按条件(逻辑值)取子集【理解!!!】...= "NAME")6.矩阵#新建矩阵m 的子集——注意矩阵中不能使用$进行取子集...as.data.frame(m)之后才能真的把m变成数据框#用矩阵画热图pheatmap::pheatmap(m) #默认设置-把相似的行和相似的列聚类pheatmap::pheatmap(m,cluster_cols...(2:9, nrow = 2))l#列表取子集,直接取出来的元素是列表l$m18.补充知识# 元素的名字scores = c(100,59,73,95,45)names(scores) = c("jimmy
#读取"gene.csv"文件,赋值df2 3.数据框属性 4.数据框取子集 df1$gene #"$"前是数据框名称 后是列名;提取该列的向量 #按名字取子集 df1 行,列 图片 5.数据框修改...取子集,赋值 #改行名和列名 rownames(df1) 行名 #只修改某一行/列的名 colnames(df1){2} <- "CHANGE..." #修改一个列名 6.两个数据框的连接 按照共同的列名取交集,后连接 两个数据框列中有交集时既可以使用,自动连接 矩阵新建和取子集 矩阵画热图 pheatmap::pheatmap(m) #热图结果默认聚类...pheatmap::pheatmap(m,cluster_cols = F,cluster_rows = F) #修改默认聚类 列表新建和取子集(列表可装万物) x[1] x$m1 #列表取子集 元素的...“名字”-names() 后置的难点 数据框按照逻辑值取子集 #将逻辑值赋值给k,按逻辑值在df1中取子集**实战中会经常遇到 删除变量 数据结构总结 以上来源,生信技能树
list列表:可装万物 向量 矩阵 数据框 数字 列表 。用class可以判断是矩阵或数据框,还可以用is族函数来判断。...列dim(df1)nrow(df1)ncol(df1)#行名,列名rownames(df1)colnames(df1)#4.数据框取子集df1$score 向量取子集用的是[] 取score这一列df1...$gene #删掉score,按tab键试试mean(df1$score)## 按坐标df1[2,2]df1[2,] 第二行df1[,2]df1[c(1,3),1:2] 1,3行,1,2列 向量是x[...c("r1","r2","r3","r4")#只修改某一行/列的名colnames(df1)[2] 行名都是向量#6.两个数据框的连接test1 行,前4列,并转换为矩阵,赋值给a。
输入:grid = [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]] 输出:8 解释:矩阵中共有 8 个负数。...} } return count; } } 第一个for循环控制行,...第二个while循环来二分查找, 让Low=high 结束找到第一个负数开始出现的下标(此时 Low=high=第一个负数下标), 让count+(总长度-low)
(df) #查看行名 colnames(df) #查看列名 输出结果: 图片 图片 数据框的操作 #数据框取子集 df$change #按列名取一列,返回一个向量 df[,1] #按列号取一列,返回一个向量...df[1,1] #按坐标取一格 df[1,] #按行号取一行,返回一个数据框 df[c(1,3),1:2] #按坐标范围取多格,返回一个数据框 输出结果: 图片 图片 图片 #数据框的修改 df$score...(df)[1] = "genes" #修改列名 df #数据框取子集进阶 df[df$score > 4,] #提取出score>4的行 df$gene[df$score>4] #提取出score>4的基因...= 3)) l #列表取子集 l[[2]] #列表取子集需用[[]] l$m 输出结果: 图片 向量、列表中元素的名字 v = c(1,2,3,4) names(v) = c("a","b","c",..."d") names(l) = c("a","b","c") v l v[["a"]] #向量利用元素名字取子集 l[["a"]] #列表利用元素名字取子集 输出结果: 图片 变量的删除 删除一个变量
数据框取子集 a.$ df1$gene #删掉“gene”,按tab键,可以提示出表格的全部列名 小技巧:在今后把 df1$gene 看作一个整体,是一个向量,这样不容易产生困惑。...","r2","r3","r4") 修改行名 d.只修改某一行/列的名 colnames(df1)【2】 = "CHANGE" 将第二列的名字改为CHANGE e.两个数据框的连接merge merge...all.x = all, all.y = all,“不放弃每一个人”,不舍弃无法合并的内容 图片 矩阵 取子集:不支持$ 图片 新建矩阵: m = matrix(1:9, nrow = 3) colnames...(m) = c("a","b","c") #加列名 rownames(m) = c("q","w","e") #加行名 矩阵的转置和转换: 转置:t(m) 行变列,列变行 转换:as.data.frame...(m) 转换为数据框 列表 列表新建和取子集 新建 q = list(m1 = matrix(1:9, nrow = 3), m2 = matrix(2:9, nrow = 2)) 取子集 如果有
一、向量、矩阵、数据框和列表的区别 1)向量:一维 2)矩阵:二维,只允许一种数据类型 3)数据框:二维,每列只允许一种数据类型 4)列表:容纳各种数据类型 ps:数据类型的判断:clss()...(3)数据框的属性 获得行数 nrow() 获得列数 ncol() 获得行名 rownames() 获得列名 colnames() (4)数据框取子集 >数据框名称 $ 列名 eg. df1$...gene 图片 #按坐标 df1[2,2] 取出一个格子 #按行....) 4、修改行名和列名 行名修改:rownames(数据框的名称)<-c() #重新赋值 名列名修改:colnames(数据框的名称)<-c() 改一个行名或列名: colnames(数据框名称)[列数...7 8 9 (3)矩阵和数据框的转化 as.data.frame() as.matrix() 最后用class() 明确一下数据类型 (4)矩阵画热图 图片 四、列表 (1)列表的新建
colnames(df1) #输出列名 数据框取子集 数据主要操作为按列取子集,取出来的为向量;按行去子集取出的仍为数据框。...#4.数据框取子集 df1$gene #删掉score,按tab键试试 mean(df1$score) ## 按坐标 df1[2,2] # 取第二行第二列 df1[2,] #取第二行 df1[,2]...<- test[1:3,] a a[,c(1,3,2)] 图片 矩阵的新建和取子集 #矩阵的新建和取子集 m <- matrix(1:9, nrow = 3) colnames(m) <- c("a"...,"b","c") #加列名 m m[2,] #矩阵取子集不支持使用$ m[,1] m[2,3] m[2:3,1:2] m #矩阵中的重要函数 t(m) #行列的转置,行变列,列变行,行名和列名都跟着变换...= matrix(1:9, nrow = 3), m2 = matrix(2:9, nrow = 2)) l l[[2]] #列表取子集 l$m1 #列表中的元素有名字,可以用
函数可以避免此前的错误a行名,且其会有一个data.table的数据结构多出来,可以设置data.table...df1列名的向量取子集*输入df1$后按tab键可以输出待选的列名mean(df1$score) #对取出的向量可以进行运算坐标取子集df1[2,2] #取出(行数,列数)的单元格df1[2,] #取出第二行的所有内容...意义同向量列名或行名取子集df1[,"gene"] #取出列名为"gene"的单元格df1[,c('gene','change')] #取出列名为"gene"及"change"的单元格逻辑值取子集df1...= ls())load(file = "soft.Rdata") #使Rdata中的向量出现在环境内,本身有名称,无需赋值矩阵和列表矩阵矩阵内所有元素数据类型必须相同*警惕因数据类型不同导致矩阵强制转换引起报错...#取子集方法同数据框t(m) #转置行与列,数据框转置后为矩阵as.data.frame(m) #将矩阵转换为数据框列表列表内有多个数据框或矩阵,可通过list函数将其组成一个列表l <- list(m1
()读取行数、ncol()读取列数、rownames()读取行名、colnames()读取列名 3、数据框取子集 ①、$:取数据框中的某一项 #4.数据框取子集 df1$gene mean(df1$..."r4") #只修改某一行/列的名 colnames(df1)[2] <- "CHANGE" 6、数据框的连接 我们如何将这两个数据框连接起来呢?...: 二、矩阵 ①、新建矩阵和取子集 ##### 矩阵和列表 m <- matrix(1:9, nrow = 3) colnames(m) <- c("a","b","c") #加列名 m m[2,] m...[,1] m[2,3] m[2:3,1:2] ②、矩阵的转置和转换 如上图所示,colnames()行和列互相转换,as.data.frame()将矩阵转换为数据框...大家再坚持坚持,还有列表一个知识点了? 三、列表 ①、列表新建和取子集 注意:只有列表有[[]]方法取子集。
3)按坐标取子集,用中括号表示[行,列]: gene change score 1 gene1 up 5 2 gene2 up 3 3 gene3 down -...x=1,2,3,4,5 [1] 1 5 6)数据框取自己,按名字提取列信息 变量[“行名”,”列名“] df1 gene change score 1 gene1 up 5 2 gene2...取出来的是符合条件的子集】 筛选score > 0的基因 > df1[df1$score > 0,]内容写在逗号前取子集是按行来取子集 取df1数据框中score那一列大于0的df1值如第一行、第二行...【当默认的设置不符合你的预期,可以在作者允许的范围内自定义】 (9)列表新建和取子集 #list生成列表、矩阵的函数【包容性很强!】...(10)从列表中提取矩阵 【矩阵】l[[2]]只把矩阵提取出来!
数据结构 3 数据框、矩阵和列表 之前学过的,Vector向量是 一维的 数据框、矩阵和列表如下: 1)现在学“表格” 二维:二维有两个:(1)matix 矩阵 —— 二维,只允许一种数据类型。...(df1) #行 > ncol(df1) # 列 > rownames(df1) #行名 > colnames(df1) #列名 3.4 数据框取子集:$ 、[ ] 、按照名字、按条件(逻辑值...但是 $ 自动补齐不可以 >df1[,"gene"] > df1[,c("gene","change")] #按条件(逻辑值) 挑选score>0 的行 > df1[df1$score>0,] #这是按照行取的...) > df1 #加一列 >df1$p.value的名字之前的里面没有 >df1 #行名和列名的修改,也就是向量的修改 >rownames...$取列 / [行,列] 行列名/行列号、逻辑值 修改/新增 取子集+赋值 两表相连 merge 矩阵新建和取子集
> rownames(df1) ###行名 [1] "1" "2" "3" "4" > colnames(df1) ###列名 [1] "gene" "change" "score" 数据框取子集.../逻辑值取子集,TRUE对应的行/列留下,FALSE对应的行/列丢掉 > df1[df1$score>0,] ## 按行筛选score大于0的行 gene change score 1 gene1...[df1$score>0,1] ##逗号前是筛选行,逗号后是筛选列 [1] "gene1" "gene2" ###用于取子集的逻辑值向量与x对应即可,不必由x生成 > x=df1$gene;x [1...新建矩阵函数:matrix > m行三列划分为矩阵,默认是按列排序 > m [,1] [,2] [,3] [1,] 1...(m) ###默认值存在聚类 > pheatmap::pheatmap(m,cluster_cols=F,cluster_rows=F) 图片 图片 列表新建和取子集 列表下一级也是元素 ### 生成包含两个矩阵的列表
(文中图片引用于生信技能树小洁老师PPT,仅用于自己学习,不用于商业目的,如有侵权,立即删除)Part3 数据框、矩阵和列表 vector向量 一维 matrix...矩阵 二维,只允许一种数据类型 data.frame数据框 二维,每列只允许一种数据类型 list列表 可装万物数据结构的判断:a....按名字提取 Tips:用"$"提取子集和按名字提取子集,都是针对列。...按逻辑值取子集5. 数据框修改 新增一列 修改行名与列名6. 两个数据框的连接 a....共同列的列名不一样的两个表记忆卡片矩阵新建和取子集 不支持$,只能按坐标取矩阵的转置和转换矩阵画热图列表新建和取子集补充元素的名字变量的删除
> rownames(df1) <- c("r1","r2","r3","r4") 只修改某一行/列的名 > colnames(df1)[2] <- "CHANGE" 6.两个数据框的连接 > test1...a b c 2 5 8 > m[,1] #取矩阵的第一列 1 1 2 3 > m[2,3] #取矩阵的第二行第三列c 8 > m[2:3,1:2] #取矩阵2、3行的1、2列 a b 1,...(嵌套),列表的下一级也是元素 列表 #生成两个包含矩阵元素的列表 #画图都是针对矩阵和数据框 没有针对列表设置的 > l <- list(m1 = matrix(1:9, nrow = 3),...m2 = matrix(2:9, nrow = 2)) #取列表里的子集也是用$ > $m1 [,1] [,2] [,3] 1, 1 4 7 2, 2 5...9 >$m2 [,1] [,2] [,3] [,4] 1, 2 4 6 8 2, 3 5 7 9 >l[[2]] #两个[[]] 记为一种列表取子集的固定写法
df1)#列数rownames(df1)#行名colnames(df1)#列名取子集:取列: $按坐标: [] #2,2取第二行第二列按名字,c('gene','change') 取多列/行修改一个格-.../合集-mergemerge(test1,test2,by="共同列的列名")merge(test1,test3,by.x = "name",by.y = "NAME")# name为test1需要合并的列的列名矩阵...matrix -**二维,只允许一种数据类型新建 子集-[]转置-t()转换为数据框: as.data.frame()画热图pheatmap::pheatmap()列表list:...可装万物新建 子集[[]]、$补充:元素的“名字”-names()难点:数据框按逻辑值取子集删除变量:一个rm(x)多个rm(df1,m)全部rm(list =...ls())清空控制台 快捷键ctrl+l函数与参数括号前为函数,形式参数为作者设置,可省略,实际参数自己设置。
x的下标组成的向量,x[2:4],x[c(1,5)],反选x[-4]#去掉第四个位置x[-(2:4)]#去掉234的位置(3)按名字#修改向量中的某个/某些元素:取子集+赋值,改一个元素x[4]按TAB键导入文件名,不要手动输入)# (3)读取表格文件view,dim,nrow,ncol,rownames,colnames,修改和取子集# (4)R语言内置数据...#只修改某一行/列的名colnames(df1)[2] 子集1$一次只能取1列,2按坐标,名字(一次可以取多列),逻辑df1$gene #删掉score,按tab键取文件...9l[[2]]#列表取子集,数据类型是矩阵,两个[[]]/$## [,1] [,2] [,3] [,4]## [1,] 2 4 6 8## [2,] 3 5...= 1)#尝试将第一列设置行名但失败,因为有重复的字符(a,a,b,b)## Error in read.table(file = file, header = header, sep = sep,
数据框、矩阵、列表matrix:只允许一种数据类型(有坑,见后)data.frame:每列只允许一种数据类型数据框属性df1 名rownames(df1)#返回向量,行名## [1] "1" "2" "3" "4"colnames(df1)#返回向量,列名##...[1] "gene" "change" "score"#修改数据框就是修改向量#改行名和列名rownames(df1) 行/列的名colnames...(df1)[2] 子集取子集的本质还是按位置或者按逻辑值#筛选数值型df1[df1$score > 0,]#取出df1中#筛选test中,Species列的值为a或c的行test...df2)#删除多个rm(list = ls()) #清空下载包options("repos"=c(CRAN="http://mirrors.tuna.tsinghua.edu.cn/CRAN/"))#设置镜像
只能有一种数据 是特殊的数据框 | 数据框 一列只能有一种数据 | 列表 没有限制 | 区分矩阵和数据框:根据生成它的函数 或 class() is()族函数 重点:数据框 1.数据框来源 (1)用代码新建...列名 rownames(df1) ## [1] "1" "2" "3" "4" colnames(df1) ## [1] "gene" "change" "score" 4.数据框取子集,注意按逻辑值取子集的难点...,按条件(逻辑值)取子集:1....rownames(df1) <- c("r1","r2","r3","r4") #只修改某一行/列的名 colnames(df1)[2] 的列名,就是修改列名这个向量的第二个元素...pheatmap::pheatmap(m) # pheatmap可以接受矩阵也可以接受数据框,heatmap只能接受矩阵,看函数说明 列表 #列表建立 x <- list(m1 = matrix(1:
领取专属 10元无门槛券
手把手带您无忧上云