美文网首页
R tips:Seurat应该这么读取多样本

R tips:Seurat应该这么读取多样本

作者: 生信云笔记 | 来源:发表于2024-08-30 17:43 被阅读0次

"枪响了"
"看到是谁开的枪了吗"
"看不清,他站在道德的制高点上,他在阳光下。"
                    ——温特伯格《狩猎》

  知其道,用其妙。

  vector作为基础数据结构,用过R语言的人都不陌生。譬如索引,切片都是常见的操作,除了这些,向量还有一个属性,可以给每个元素一个名称。看似无所谓的属性,很多时候在实际操作中却很实用,很多好用的R包都用了这个特性,方便高效。

  比如,单细胞使用seurat做下游分析时,读取cellranger的结果,一个样本无需纠结:

obj <- CreateSeuratObject(counts = Read10X('sample/filtered_feature_bc_matrix'), project = 'sample')

  多个样本时,就可以利用命名向量的形式,一次性读取:

samdir
                             sample1                              
"sample1/filtered_feature_bc_matrix" 
                             sample2
"sample2/filtered_feature_bc_matrix"
                             sample3
"sample3/filtered_feature_bc_matrix"

obj <- CreateSeuratObject(counts = Read10X(samdir))

  与普通向量相比,简单来说命名向量就是多了一层名称的属性,就好像两个向量合二为一了。既然,可以合二为一,那么这种关系就可以利用起来,比如下面两个向量:

vec1 <- c('group1', 'group3', 'group2', 'group3', 'group1', 'group2')
vec2 <- c('red', 'blue', 'green')

  如果要实现group1group2group3分别与redbluegreen对应起来,简单来说就是将vec1的元素对应替换为vec2的元素,怎么做比较方便?其实,这种需求在数据分析中还是很常见的,要说实现方式肯定不少,但最简单直接的还是利用向量的属性,即元素名称。

names(vec2) <- c('group1', 'group2', 'group3')
vec3 <- vec2[vec1]
vec3
group1  group3  group2  group3  group1  group2
 "red" "green"  "blue" "green"   "red"  "blue"

  不过,现在应该用不到自己写代码了,只要能够把需求详细地描述出来,然后借助ChatGPT来实现。

相关文章

网友评论

      本文标题:R tips:Seurat应该这么读取多样本

      本文链接:https://www.haomeiwen.com/subject/qtyfljtx.html