Почему не удается создать pdf путем итерации из списка аргументов для for / lapply? - PullRequest
0 голосов
/ 03 мая 2020

Я относительно новичок в 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, map, и он не работает. Я не понимаю, почему это выполнение не удается ...

Как я могу пройти через это? В этом случае Markers представляет собой список из 24 элементов.

Большое спасибо, Жан

1 Ответ

0 голосов
/ 04 мая 2020

решение:

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