R:如何从函数中传递一个图表列表并访问内容?

时间:2016-11-18 03:35:40

标签: r list plot ggplot2

我在函数中创建了一些图,然后将它们传递给常规代码。没有错误消息,但是当我运行代码时,代码没有收到图 - 从函数返回后没有出现图。

这是我的代码。请让我知道我做错了什么,这样才能奏效。 感谢

library(dplyr)
library(stringr)
library(ggplot2)
library(reshape2)
require(grid)

create_plots <- function(selection)  {  
    temp_plot <- list()

    if(selection == 1) 
    {
        temp_plot[[1]] <- hist(mtcars$mpg, 
                               main="my histogram",
                               xlab="xlabel", 
                               ylab="ylabel")
        return(temp_plot)
    }

    if(selection == 2) 
    {
        temp_plot[[1]] <- ggplot(mtcars, aes(x=mtcars$mpg)) +
                                 geom_histogram(binwidth=0.10, colour="black", fill="white") +
                                 ggtitle ("frequency!!") + 
                                 labs(x=mpg, y="frequency")
        return(temp_plot)
    }

    if(selection == 3) 
    {
       temp_plot[[1]] <- barplot(mtcars$mpg, 
                                 main="my barplot",
                                 xlab="xlabel", 
                                 ylab="ylabel")
       return(temp_plot)
    }

}

plot_list2 <- list()
plot_list3 <- list()

plot_list2[[1]]<-create_plots(1) #ok
plot(plot_list2[[1]][[1]])  # ok
plot_list2[[2]]<-create_plots(2) #ok
plot(plot_list2[[2]][[1]]) #ok
plot_list2[[3]]<-create_plots(3) #ok
plot(plot_list2[[3]][[1]]) #prints some strange plot not my barplot, why?

plot_list3<-create_plots(1) #ok
plot(plot_list3[[1]]) #ok
plot_list3<-create_plots(2)
plot(plot_list3[[2]]) #subscript out of bounds error for a list of TWO items???
plot_list3<-create_plots(3)  #ok
plot(plot_list3[[3]]) #subscript out of bounds error for a list of TWO items???

0 个答案:

没有答案