在R中绘制graphics并将其导出到Excel中

在我的数据中,我有多个国家,每个国家有5个产品。 我对每个组合进行了一次回归,现在我正试图在同一个图表上为每个组合绘制预测值与实际值。

我总共有10个国家,每个国家在Excel文件中都有自己的标签。 由于有5个产品,这是总共50个图表。 我想在R中绘制graphics并将它们导出到Excel中循环。 我正在使用excel.link软件包ggplot ,我遇到的问题是图表显示为Excel中的空格,或者如果R中有一些graphics – graphics显示而不是所需的graphics。

**注:我以前得到一个错误,说第一个图表“rversion找不到”,但现在我更新了我的RStudio,我不再得到这个错误。 graphics还是输出空白或反之前出现的graphics

这是一个简化的循环,类似于我的代码。 如果我手动运行循环,通过每次更改i ,一切都被导出确定。 如果我运行for loop ,则会出现以上描述的问题:

require(excel.link)

set.seed(124)

for(i in 1:5){

 # i <- 2 myseq <- seq(1,100, by=1) norm <- rnorm(100) mydata <- as.data.frame(cbind(myseq, norm)) colnames(mydata) ggplot(data = mydata, aes(x=myseq, y=norm, group=1)) + geom_line(size=1, col="blue") + ggtitle(paste("My Plot ", i)) y.plot=current.graphics() xl[a1] = list(y.plot) 

}

首先你应该在循环中显式地打印ggplot2graphics。 其次,你在相同的位置在同一张表上放置excel的地块。 因此,您的graphics将彼此放在一起,您将只能看到Excel中的最后一幅图。 用于在单独的图表上显示图的代码:

 library(excel.link) library(ggplot2) set.seed(124) xl.workbook.add() # open new workbook for(i in 1:5){ myseq <- seq(1,100, by=1) norm <- rnorm(100) mydata <- as.data.frame(cbind(myseq, norm)) colnames(mydata) p = ggplot(data = mydata, aes(x=myseq, y=norm, group=1)) + geom_line(size=1, col="blue") + ggtitle(paste("My Plot ", i)) print(p) ## display ggplot graphics y.plot=current.graphics() xl.sheet.add() ## add new sheet in excel workbook xl[a1] = y.plot } 

从上到下在单页上显示图的代码:

 library(excel.link) library(ggplot2) set.seed(124) xl.workbook.add() # open new workbook y.plot = lapply(1:5, function(i) { myseq <- seq(1,100, by=1) norm <- rnorm(100) mydata <- as.data.frame(cbind(myseq, norm)) colnames(mydata) p = ggplot(data = mydata, aes(x=myseq, y=norm, group=1)) + geom_line(size=1, col="blue") + ggtitle(paste("My Plot ", i)) print(p) ## display ggplot graphics current.graphics() }) xl[a1] = y.plot