首页 > 解决方案 > 将 R 中的对象名称作为文件名扩展为 R 中的 pdf 函数

问题描述

我正在尝试遍历一堆文件,并为每个文件制作一个带有 pheatmap 功能的 pdf 文件。我写了这样的东西:

lapply(files, function(x) {
  a <- basename(x)
  a <- gsub(".txt","",a)

  d <- read.table(gzfile(x),header = FALSE, sep="\t",skip=1)
  d<- d[,c(4,7:306)]
  dmat <- d[,-1]
  rownames(dmat) <- d[,1]
  pdf(file = "eval(a).pdf",height=25,width = 10)
    x <- pheatmap(dmat,
                  scale="none",
                  cluster_rows = FALSE,
                  cluster_cols = FALSE,
                  annotation_names_col = FALSE,
                  show_colnames= FALSE,
                  color = colorRampPalette(rev(brewer.pal(n = 7, name ="RdYlBu")))(500),
                  main = a
                  )
  dev.off()
})

在这一pdf(file = "eval(a).pdf",height=25,width = 10)行,我想评估变量a的值,以便我可以为生成的每个 pdf 获得不同的名称。我怎样才能做到这一点?

谢谢

标签: rpdflapplypheatmap

解决方案


lapply(files, function(x) {
  a <- basename(x)
  a <- gsub(".txt","",a)

  d <- read.table(gzfile(x),header = FALSE, sep="\t",skip=1)
  d<- d[,c(4,7:306)]
  dmat <- d[,-1]
  rownames(dmat) <- d[,1]
  pdf(file = paste(a,".pdf",sep = "",collapse = NULL),height=25,width = 10)
    x <- pheatmap(dmat,
                  scale="none",
                  cluster_rows = FALSE,
                  cluster_cols = FALSE,
                  annotation_names_col = FALSE,
                  show_colnames= FALSE,
                  color = colorRampPalette(rev(brewer.pal(n = 7, name ="RdYlBu")))(500),
                  main = a
                  )
  dev.off()
})

推荐阅读