在R中拆分对象

在R中拆分对象,r,object,split,R,Object,Split,我想根据它包含的条形码的后缀在R中拆分一个对象。它们以'-n'结尾,其中n是从1到6的数字。e、 g.AAACCGTGCTCA-1、GAACCGTGCTCA-2、CATGCGTCCTCA-5等。我希望每个条形码的所有相应信息也能相应拆分。下面是对象cds的一些示例代码 class(cds) [1] "CellDataSet" attr(,"package") [1] "monocle" split(cds, cds$barcode) #not by individual barcodes, b

我想根据它包含的条形码的后缀在R中拆分一个对象。它们以'-n'结尾,其中n是从1到6的数字。e、 g.AAACCGTGCTCA-1、GAACCGTGCTCA-2、CATGCGTCCTCA-5等。我希望每个条形码的所有相应信息也能相应拆分。下面是对象cds的一些示例代码

class(cds)
[1] "CellDataSet"
attr(,"package")
[1] "monocle"

split(cds, cds$barcode)
#not by individual barcodes, but by groups of those ending '-1', '-2',...,'-6'. So 6 new objects in total
非常感谢


Abigail

我们可以使用
sub
删除
-\\d+
并基于此拆分“CD”

split(cds, sub("-\\d+$", "", cds$barcode))

拆分不起作用,因为需要基于列创建子集。我不确定是否为此类定义了拆分方法。您可以尝试以下操作:

首先要获得类似于您的示例的内容:

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"
要获得您的6个组,您可以执行以下操作,但请检查您的计算机是否具有容纳此组的内存

subset_obj = lapply(unique(grp),function(i){
cds[,grp==i]
})
names(subset_obj) = unique(grp)

非常感谢。我收到以下错误:警告消息:在拆分中。默认值(cds,sub(“-\\d+$”,“”,cds$条形码)):数据长度不是拆分变量的倍数这是否意味着结束于-1到-6的条形码数量不相同?另外,如果我想根据每个条形码末尾的数字分割CD,但要保持条形码的原样,脚本会是什么?谢谢i、 e.在不删除末尾的数字的情况下,您可以尝试
拆分(cds$barcode,sub(“-\\d+$”,“”,cds$barcode))
谢谢!您知道我是否可以根据不同的条形码组对数据子集选择性地应用不同的功能,而不是拆分此对象?例如,如果我想在1-6的每个条形码组上分别使用函数“plot_genes_in_pseudotime()”。Hi@Abigail575,您可以这样做,my_genes绘图基于ggplot2,因此您可以研究如何组合绘图或改变尺寸。。