簡體   English   中英

如何將多個圖從自己的函數保存到 R 中的列表中?

[英]How to save several plots from an own function into a list in R?

我創建了一個包含兩種類型圖的函數,它將為您提供一張圖像。 但是,此圖像的標題將根據一個列表而變化,因此,您將有多個圖但標題不同。 (原始函數將更改繪圖使用的數字,但本質上,這是我需要的)。

這是我創建的示例。

list_genes <- c("GEN1", "GEN2", "GEN3")


myfunction <- function(x,y){
  
  for(gene in list_genes){
    # This to draw both plots
      par(mfrow=c(2,1))  
      
      plot(x,y, main=paste0("Plot of ", gene))
      
      hist(x, main=paste0("Plot of ", gene))
  }
}

myfunction(x=c(1,5,6,2,4),y=c(6,10,53,1,5))

由於列表有 3 個元素,我們得到 3 個圖。 圖 1

但是,由於我需要使用我生成的所有圖創建演示文稿,我發現這篇文章提供了一個解決方案,可以為 for 循環內的多個圖創建幻燈片。 這是我想要的,但為此,我需要將我的圖保存到列表/變量中。

object <- myfunction(x=c(1,5,6,2,4),y=c(6,10,53,1,5))
> object
NULL

我發現了這篇文章(它為您提供了一個有趣的解決方案)但是,這些圖仍然無法保存到對象中。

calling_myfunc <- function(){
  myfunction(x=c(1,5,6,2,4),y=c(6,10,53,1,5))
}

calling_myfunc()

object <- calling_myfunc()
> object
NULL

我的最終目標是使用我從函數生成的所有圖創建一個演示文稿(自動)。 正如我在這篇文章中看到 但我需要將這些圖保存到一個變量中。

有人可以幫我解決這個問題嗎?

首先十分感謝

盡管我找不到將繪圖保存到對象中的方法,但由於這篇文章export包,我找到了一種使用這些圖像創建演示文稿的方法。

library(export) 

list_genes <- c("GEN1", "GEN2", "GEN3")


myfunction <- function(x,y){
     for(gene in list_genes){
    # This to draw both plots
      par(mfrow=c(2,1))  
      
      plot(x,y, main=paste0("Plot of ", gene))
      
      hist(x, main=paste0("Plot of ", gene))
      graph2ppt(file="plots.pptx", width=6, height=5,append=TRUE)    } }

myfunction(x=c(1,5,6,2,4),y=c(6,10,53,1,5))

當然,繪圖的寬度和高度可以更改或將它們作為參數放在函數中。

由於我當前的 R 版本(4.1.2)在 CRAN 中沒有該包,我從 GitHub 下載了它: devtools::install_github("tomwenseleers/export")

另外,我找到了另一個可以用於相同目的的包(雖然它在開始時增加了一張幻燈片,但我不知道為什么)

library(eoffice)

list_genes <- c("GEN1", "GEN2", "GEN3")


myfunction <- function(x,y){
  
  for(gene in list_genes){
    # This to draw both plots
      par(mfrow=c(2,1))  
      
      plot(x,y, main=paste0("Plot of ", gene))
      
      hist(x, main=paste0("Plot of ", gene))
      topptx(file="plots.pptx", width=6, height=5,append=TRUE) 
  }
}

myfunction(x=c(1,5,6,2,4),y=c(6,10,53,1,5))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM