2016-03-15 28 views
6

私のデータには複数の国があり、各国には5つの製品があります。私は各組み合わせに対して回帰を行いましたが、今度は、各組み合わせについて、予測値と実際の値を同じグラフにプロットしようとしています。Rでグラフをプロットし、ループでExcelにエクスポートする

私は合計10カ国あり、各国はExcelファイルに独自のタブを持っています。 5つの製品があるので、合計50のグラフです。 私はグラフをRにプロットして、それらをループにExcelにエクスポートしたいと考えています。私はexcel.linkパッケージggplotを使用していますが、私がいる問題は、グラフをExcelで空白スペースとして表示されたりRにおけるいくつかのグラフがあった場合ということです - そのグラフではなく、必要なグラフで表示されます。

**注:私は「rversionが見つからない」と述べた最初のグラフでエラーを取得するために使用されていないが、今、私は私のRStudioを更新し、私はもはや、このエラーが発生します。グラフはまだ空白のエクスポートされるか、以前のグラフはここで代わりに

表示されますが、私のコードであるのと同様の単純化されたループ、です。毎回iを変更してループを手動で実行すると、すべてがOKにエクスポートされます。あなたが明示的にggplot2グラフィックスを印刷する必要があり、すべての

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) 

}

+0

あなたはグラフ1と2の簡単な例を作ってみましたがありますか?グラフ1の実際のディテールが間違っているかどうかはわかりにくいです。たぶんそれを1つの国、1つの製品、それに入る単純なデータセットに分けることができます。それにもかかわらず、私の最初の考えは、グラフ1は全くプロットを生成していない可能性があり、それは 'excel.link'とは何の関係もありません。プロットをpngに正常にエクスポートしましたか? – dmp

+0

シンプルなコードを作成しましたが、同じ問題が発生します。ループを手で(5回変えて)しようとすると、すべてがうまくいく - 私は正しいプロットをExcelに貼り付けます。 forループを実行すると、機能しません。 'のための(I 1:5){ ' '#iは< - 2 ' ' myseq < - 配列(1,100 = 1)' 'ノルム< - rnorm(100)' 'MYDATA < - as.data.frame(CBIND(myseq、ノルム)) '' COLNAMES(MYDATA) '' ggplot(データ= MYDATA、AES(X = myseq、Y =ノルム、基= 1))+ 'geom_line(サイズ= 1、col = "blue")+ ' ' ggtitle(ペースト( "My Plot"、i)) ' ' y.plot = current.graphics() ' ' xl [a1] = list(y。プロット) ' '} ' – user1429611

+0

問題を再現する最も簡単な例を使用して質問した場合、私たちが手助けするほうが簡単です。たとえば、あなたのコメントからあなたの質問のコードにコードを接続するのは苦労しています。 'for'ループと関係がある場合、他のすべての詳細とは無関係の単純な解決策があります。質問をより簡単に修正していただけますか? – dmp

答えて

0

まず:私はfor loopを実行すると、問題は、私は上記のことが起こりループの中。第二に、あなたは同じ位置の同じシートに優れたプロットを入れます。あなたのグラフはお互いに配置され、Excelの最後のプロットだけが表示されます。下へ上から1枚の用紙にプロットを表示するための

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 
関連する問題