R:如何获取传递给函数的对象的名称?

时间:2014-08-20 16:58:14

标签: r ggplot2 names

我试图创建一个函数来获取几个图的不同版本。通常,我必须为进行的几个分析做出报告,我的同事需要不同版本的图(深色背景,浅色背景等),以便在不同的演示文稿,论文等中使用它们。

我的尝试是:

PlotVariants <- function(plotList){
  #' Función para generar diferentes formatos de gráficas para su
  #' visualización. Requiere que las gráficas se hayan hecho con ggplot2
  #' Function to generate several graphs formats to better visualization.
  #' It requires that graphs had been done in ggplot2.
  #' plotList: lista con todas las gráficas que queremos modificar
  #' plotList: list with all graphs to modify

  library(ggplot2)
  library(ggthemes)
  Formatting.plots <- function(x){
    name.plot <- deparse(substitute(x))
    plt <- x + theme_bw(base_size=11) +
      theme(panel.grid.major=element_blank(),
            panel.grid.minor=element_blank(),
            legend.background=element_blank())    
    ggsave(filename=paste('Figures/',name.plot,'_bw.pdf', sep=''),
           plot=plt)

    plt <- x + theme_solarized(base_size=11) +
      theme(panel.grid.major=element_blank(),
            panel.grid.minor=element_blank(),
            legend.background=element_blank()) 
    ggsave(filename=paste('Figures/',name.plot,'_solarized.pdf', sep=''),
           plot=plt)

    plt <- x + theme_solarized(light=FALSE,base_size=11) +
      theme(panel.grid.major=element_blank(),
            panel.grid.minor=element_blank(),
            legend.background=element_blank())
    ggsave(filename=paste('Figures/',name.plot,'_solarized_dark.pdf', sep=''),
           plot=plt)
  }
  lapply(plotList, Formatting.plots)
  return('DONE')
}

功能有效,因为不同的数字保存在&#39;数字/&#39;项目的文件夹,但plotList中的图的名称被转换为X [1L]到X [[nL]](其中n是列表中的图的数量),得到数字/ X [[1L] ] _bw.pdf例如(见下面的代码):

# Libraries
library(ggplot2)
library(ggthemes)

# Some foo.data and two foo.plots to use as example
foo.x <- rnorm(10)
foo.y <- rnorm(10)
foo.df <- data.frame(x=foo.x,y=y)
foo_plot_1 <- ggplot(foo.df,aes(x=x,y=y))+
                   geom_point()
foo_plot_2 <- ggplot(foo.df,aes(x=x,y=y))+
                   geom_line()

# Creating the foo.list to use with the function
foo.list.plots <- list(foo_plot_1,foo_plot_2)

# Calling the function
PlotVariants(foo.list.plots)

# Expected content of the Figures/ folder:
dir('Figures/')

foo_plot_1_bw.pdf
foo_plot_1_solarized.pdf
foo_plot_1_solarized_dark.pdf
foo_plot_2_bw.pdf
foo_plot_2_solarized.pdf
foo_plot_2_solarized_dark.pdf

# Actual content of the Figures/ folder:
dir('Figures/')

X[[1L]]_bw.pdf
X[[1L]]_solarized.pdf
X[[1L]]_solarized_dark.pdf
X[[2L]]_bw.pdf
X[[2L]]_solarized.pdf
X[[2L]]_solarized_dark.pdf

我一直在阅读并寻找问题的答案,但我找不到答案。如果可能的话,我希望有人可以指导我获取正确的名字。 提前谢谢。

0 个答案:

没有答案