为什么通过参数列表迭代创建 pdf 失败并显示 for/lapply?

Why does creating a pdf by iteration from a list of argument fail with for/lapply?

我对 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 个元素的列表。

非常感谢 让

解决方案:

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")}