微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R中Seurat分析中的for循环函数

如何解决R中Seurat分析中的for循环函数

我试图获得我制作的函数的多个输出

ratio_marker_out_2 = function(marker_gene,cluster_id){
marker_gene = list(row.names(FindMarkers(glioblastoma,ident.1 = cluster_id)))
for (gene in marker_gene){
all_cells_all_markers = glioblastoma@assays$RNA@counts[gene,]
selected_cells_all_marker = all_cells_all_markers[cluster_id!=Idents(glioblastoma)]
gene_count_out_cluster = glioblastoma@assays$RNA@counts[,cluster_id!=Idents(glioblastoma)] 
ratio_out = sum(selected_cells_all_marker)/sum(gene_count_out_cluster) 
} 
return(ratio_out)
}

这里,marker_gene 的长度大约是数百。假设长度为 100。我想在 marker_gene 中获得每个基因的 ratio_out。然而,当运行这个函数时,我只得到一个输出而不是一个 100 ratio_out 的列表。可以请任何人帮助如何解决它吗?

我得到的输出

ratio_marker_out_2(marker_gene,0)

1 0.5354895。请看下面的图片

enter image description here

解决方法

可以是 sum 内置函数。

默认情况下,它返回一个数字。所以当你这样做时:

ratio_out = sum(selected_cells_all_marker)/sum(gene_count_out_cluster)

实际上是将两个数字相除。

所以如果你想返回一个列表,你必须除以,根据你的计算,只是

ratio_out = (selected_cells_all_marker)/sum(gene_count_out_cluster)
,

我已经使用

解决了这个问题
all_cells_all_markers[marker_gene,cluster_id!=Idents(glioblastoma)]
ratio_out = (selected_cells_all_marker)/sum(gene_count_out_cluster). 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。