如何将自己函数中的多个图保存到 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 个图。
但是,由于我需要用我生成的所有图表创建一个演示文稿,我发现这个 有一个解决方案,可以在 for 循环中为多个图表创建幻灯片。这就是我想要的,但为此,我需要将我的地块保存到 list/variable.
object <- myfunction(x=c(1,5,6,2,4),y=c(6,10,53,1,5))
> object
NULL
我找到了这个 (它给了你一个有趣的解决方案)但是,这些图仍然无法保存到 object。
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
我最后的 objective 是用我从我的函数生成的所有图表(自动)创建一个演示文稿。 正如我在这个 .但我需要将绘图保存到变量中。
谁能帮我解决这个问题?
非常感谢
虽然我找不到将绘图保存到对象中的方法,但由于这个 和 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))
当然,绘图的宽度和高度可以更改,或者将它们作为函数中的参数。
由于 CRAN 中没有适用于我当前 R 版本 (4.1.2) 的软件包,我从 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))
PS:我找到了创建演示文稿的解决方案 -->
我创建了一个函数,其中包含两种类型的绘图,它会给你一张图像。但是,这张图片的标题会根据一个列表而变化,因此,您将有多个图但标题不同。 (原始函数会改变情节使用的数字,但本质上,这是我需要的)。
这是我创建的示例。
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 个图。
但是,由于我需要用我生成的所有图表创建一个演示文稿,我发现这个
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
我最后的 objective 是用我从我的函数生成的所有图表(自动)创建一个演示文稿。 正如我在这个
谁能帮我解决这个问题?
非常感谢
虽然我找不到将绘图保存到对象中的方法,但由于这个 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))
当然,绘图的宽度和高度可以更改,或者将它们作为函数中的参数。
由于 CRAN 中没有适用于我当前 R 版本 (4.1.2) 的软件包,我从 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))
PS:我找到了创建演示文稿的解决方案 -->