2

PCのさまざまなファイルにきれいに保存された10,000個のpng画像があります。特定のフォルダーに移動し、そのフォルダー内のすべての png ファイルを Word 文書に繰り返しコピーして貼り付けるような関数を作成したいと考えています。これはRで可能ですか?

私はパッケージを見てきましたR2wdが、悲しいことに RData を取り、そのプロットを単語文書に出力する関数しかありません ( function wdPlot)。

また、すべてのプロットに対して RData を保存しているため、特定のプロットに関連付けられた RData を単純にロードしてからwdPlot. 問題は、png を生成したときにプロットがグロブであり、次のようにしたことです。

png("rp.png",width=w,height=h)
plot(rp)
#Increase size of title
grid.edit(gridTitle_Ref, gp=gpar(fontsize=20))
#Other grid.edit alterations
dev.off()
save(rp)

さて、最初に RI に読み込んでその rp を word 文書に取得しようとすると、単純に次の操作を実行すると、タイトルが拡大されたり、その他のgrid.edit変更が加えられたプロットが MS Word に出力されません。

load("rp.Rdata")    
png("rp.png",width=w,height=h)
wdPlot(rp) 
#Increase size of title 
grid.edit(gridTitle_Ref, gp=gpar(fontsize=20))
#Other grid.edit alterations
dev.off()

繰り返しますが、これらのpngファイルはすべて持っています。さまざまな場合に、それらのサブセットをコピーして Word 文書に貼り付ける必要があります。私は毎回手動でそれを行うのが面倒なので、プログラムにそれをやってもらいたいと思っています。

編集1

したがって、以下の提案に従って、Markdown について読みました。この投稿に続いて、markdownにknitrを使用してローカル画像のサイズを設定する方法は? 私は次の行に沿って何かを書きました:

```{r,echo=FALSE,fig.width=100, fig.height=100}
# Generate word documents of reports
# Clear all
rm(list=ls())
library(png)
library(grid)
library(knitr)

dir<-"location\of\file"
setwd(dir)

# Output only directories:
folders<-dir()[file.info(dir())$isdir]

for(folder in folders){ 
  currentDir<-paste(dir,folder,"\\",sep="")
  setwd(currentDir)

  #All files in current folder
  files<-list.files()

  imgs<-[A list of all the png images in this particular file that I want in the word document - the png names]

  for(img in imgs){   
    imgRaster<-readPNG(img) 
    grid.raster(imgRaster)
    }
 } 

```

以下は、結果として得られる Word 文書の内容のスクリーンショットです。どうすればこれを修正できますか? 上記の for ループが実行されるときに、画像がドキュメントに次々と表示されるようにします。

ここに画像の説明を入力

Markdown を使用したのはこれが初めてなので、コメントにリンクされている関連するチュートリアルも非常に役立つ可能性があることに注意してください。

EDIT 2 以下の2番目の回答の例に従いました。ここに私が得た出力があります ここに画像の説明を入力 ここに画像の説明を入力

ご覧のとおり、画像はなく、html タグのみです。これを修正するにはどうすればよいですか?

4

2 に答える 2

3

が保存されている場合はpng、少しhtmlforループを使用してそれらを.docファイルに保存できます。

Windows用の編集2

# Start empty word doc
cat("<body>", file="exOut.doc", sep="\n")

 # select all png files in working directory
for(i in list.files(pattern="*.png"))
         {
         temp <- paste('<img src=', i, '>')
         cat(temp, file="exOut.doc", sep="\n", append=TRUE)  
         }

cat("</body>", file="exOut.doc", sep="\n", append=TRUE)

# Some example plots
for(i in 1:5) 
      { 
      png(paste0("ex", i, ".png"))
      plot(1:5)
      title(paste("plot", i))
      dev.off()
      }


# Start empty word doc
cat(file="exOut.doc")

# select all png files in working directory
for(i in list.files(pattern="*.png")) 
             {
             temp <- paste('<img src=', i, '>')
             cat(temp, file="exOut.doc", sep="\n", append=TRUE)   
             }

次に、ドロップダウン メニューを使用するか、呼び出すことができる小さなマクロを記述して、図を埋め込む必要があります。system


編集:出力と図への明示的なパスを表示するための小さな更新

cat("<body>", file="/home/daff/Desktop/exOut.doc", sep="\n")

for(i in list.files(pattern="*.png")) 
{
  temp <- paste0('<img src=/home/daff/', i, '>')
  cat(temp, file="/home/daff/Desktop/exOut.doc", sep="\n", append=TRUE)   
}

以前はパスとpaste0の間のスペースを削除していたことに注意してください。/home/daff/ex*.png

于 2014-11-25T01:55:47.910 に答える