为什么用forlapply从参数列表中迭代创建pdf失败?

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

我对R比较陌生,尽管我的循环正常工作,但似乎无法通过迭代列表来创建pdf。比如这段代码

(变量& 库:)

图书馆

library(Seurat)

不同的标记是像DenditicCells这样的字符链列表。

DendriticCells <- c("Kmo", "Flt3", "Ccr7", "Ccl17", "Irf8","Xcr1","Cd209")

Markers <- list(Neurons, Oligo, OPC, AstroPro, Astro, OligoPro, Pericytes, ImmuneCells, GeneOfInterest, Lymphatics, Vein, Arteries, cappilaries, Microglial, Macrophages, ThCells, Tcells, Bcells, Granulocytes, DendriticCells, CPMicrogenes, TNK, migDCs )
Markers <- setNames(Markers, c("Neurons", "Oligo", "OPC", "AstroPro", "Astro", "OligoPro", "Pericytes", "ImmuneCells", "GeneOfInterest", "Lymphatics", "Vein", "Arteries", "cappilaries", "Microglial", "Macrophages", "ThCells", "Tcells", "Bcells", "Granulocytes", "DendriticCells", "CPMicrogenes", "TNK", "migDCs" ))

代码

pdf(paste0("Run5/DotPlot6", names(Markers[x]),"Subset4.jpeg"))
DotPlot(Subset4, assay = "SCT"  ,features =Markers[[x]], dot.scale = 8)
dev.off()

工作,并创建了一个pdf,但这个代码。

Ret4 <- function(x){
  pdf(paste0("Run5/DotPlot6", names(Markers[x]),"Subset4.jpeg"))
  try(DotPlot(Subset4, assay = "SCT"  ,features =Markers[[x]], dot.scale = 8))
  dev.off()
}
for(i in 1:length(Markers))Ret4(i)

但这段代码在正常执行后却失败了 我已经尝试了使用不同的格式,lapply,地图的变化,但它不工作。我不明白为什么这个执行失败...

我怎样才能反复执行呢?在这种情况下,Markers是一个24个元素的列表。

非常感谢Jean

r iteration nested-lists
1个回答
0
投票

解决方案。

Ret5 <- function(x, Markers, Subset, nameSubset){ p <- DotPlot(Subset, assay = "SCT" ,features =Markers[[x]], dot.scale = 8) 
png(paste("Run5/Subset/", as.character(x),names(Markers[[x]]),".jpeg", sep = "")) 
print(p) 
dev.off() } 
for(x in c(1:length(Markers))){ Ret5(x, Markers, Subset1, "Subset1")} 
© www.soinside.com 2019 - 2024. All rights reserved.