将S4对象存储在data.frame或data.table中

问题描述 投票:0回答:1

我正在尝试将复杂的S4对象(通过Seurat包生成)放置在data.table中(我读到无法使用列表或data.frame,但是我没有找不到data.table与S4对象的兼容性),这取决于其属性与函数的一个值。这些对象都来自我在编写的函数中称为数据集的更大对象:

 subsets_by_cluster <- function(dataset){
 nclust=data.table(cluster_ID=c(rep(NA,length(unique([email protected])))))
 for (i in length(nclust)){
     nclust[i]=dataset[,[email protected]==unique([email protected])[i]] 
 }
 return(nclust)}

我原本希望得到一个data.table充满S4个对象,而一个列行数与不同的@ active.ident的数量值(群集ID)一样多但是当我在原始数据集上运行它时,出现错误

[<-.data.frame*tmp*中的错误,i,1,值= new(“ Seurat”,化验= list(:替换有2965行,数据有1]

我也尝试过用这种线手动完成

nclust[1]=dataset[,[email protected]==unique([email protected])[1]]

但是它也不起作用,提示错误:

类型'S4'不能强制为'逻辑'

完美地将子集存储在一个变量中]],但是我希望我的脚本能够处理不同的簇号。我正在考虑编写要读取的文件,以便随后可以读取它们,但这似乎不是最佳解决方案。

您有建议吗?

我正在尝试将复杂的S4对象(通过Seurat软件包生成)放入data.table(我读到无法使用列表或data.frame,但是我没有发现有关...的兼容性的任何信息...

r data.table iteration embedding s4
1个回答
0
投票

首先,创建一个简单的S4类(摘自Hadley Wickham的Advanced R

© www.soinside.com 2019 - 2024. All rights reserved.