我正在尝试将复杂的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,但是我没有发现有关...的兼容性的任何信息...
首先,创建一个简单的S4类(摘自Hadley Wickham的Advanced R)