"槍響了"
"看到是誰開的槍了嗎"
"看不清焚志,他站在道德的制高點上映凳,他在陽光下胆筒。"
????????????????????——溫特伯格《狩獵》
??知其道,用其妙诈豌。
??vector作為基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)仆救,用過R語言的人都不陌生。譬如索引矫渔,切片都是常見的操作彤蔽,除了這些,向量還有一個屬性庙洼,可以給每個元素一個名稱顿痪。看似無所謂的屬性油够,很多時候在實際操作中卻很實用蚁袭,很多好用的R包都用了這個特性,方便高效石咬。
??比如揩悄,單細胞使用seurat
做下游分析時,讀取cellranger
的結(jié)果鬼悠,一個樣本無需糾結(jié):
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))
??與普通向量相比肴掷,簡單來說命名向量就是多了一層名稱的屬性男翰,就好像兩個向量合二為一了。既然崔拥,可以合二為一幸缕,那么這種關(guān)系就可以利用起來群发,比如下面兩個向量:
vec1 <- c('group1', 'group3', 'group2', 'group3', 'group1', 'group2')
vec2 <- c('red', 'blue', 'green')
??如果要實現(xiàn)group1
晰韵、group2
、group3
分別與red
熟妓、blue
雪猪、green
對應(yīng)起來,簡單來說就是將vec1
的元素對應(yīng)替換為vec2
的元素起愈,怎么做比較方便只恨?其實,這種需求在數(shù)據(jù)分析中還是很常見的抬虽,要說實現(xiàn)方式肯定不少官觅,但最簡單直接的還是利用向量的屬性,即元素名稱阐污。
names(vec2) <- c('group1', 'group2', 'group3')
vec3 <- vec2[vec1]
vec3
group1 group3 group2 group3 group1 group2
"red" "green" "blue" "green" "red" "blue"
??不過休涤,現(xiàn)在應(yīng)該用不到自己寫代碼了,只要能夠把需求詳細地描述出來笛辟,然后借助ChatGPT
來實現(xiàn)功氨。