Разделение не работает, потому что вам нужно подмножество на основе столбцов. Я не уверен, есть ли метод split, определенный для этого класса. Вы можете попробовать следующее:
Сначала получите что-то похожее на ваш пример:
library(monocle)
library(HSMMSingleCell)
library(Biostrings)
cds = load_HSMM()
class(cds)
[1] "CellDataSet"
attr(,"package")
[1] "monocle"
dim(cds)
Features Samples
47192 271
И создайте штрих-код для каждого образца:
bar = paste(names(oligonucleotideFrequency(DNAString("NNNNN"),5))[1:ncol(cds)],
sample(1:6,ncol(cds),replace=TRUE),sep="-")
head(bar)
[1] "AAAAA-3" "AAAAC-6" "AAAAG-5" "AAAAT-1" "AAACA-5" "AAACC-5"
Теперь мы получаем группа, которая является суффиксом 1-6:
cds$barcodes= bar
grp = sub("[A-Z]*[-]","",cds$barcodes)
Чтобы получить одно подмножество, например, те, которые будут "-1", вы можете просто сделать:
group1 = cds[,grp==1]
dim(group1)
Features Samples
47192 46
head(group1$barcodes)
[1] "AAAAT-1" "AACGA-1" "AAGCG-1" "AAGGG-1" "AAGTA-1" "AATAG-1"
To получить 6 групп, вы можете сделать следующее, но проверьте, есть ли на вашем компьютере памяти для этого!
subset_obj = lapply(unique(grp),function(i){
cds[,grp==i]
})
names(subset_obj) = unique(grp)