2014-11-25 4 views
1

~ 10,000 개의 PNG 이미지가 PC의 다른 파일에 깔끔하게 저장되어 있습니다. 특정 폴더로 이동하여 반복적으로 해당 폴더의 모든 png 파일을 워드 문서에 복사하는 기능을 작성하고 싶습니다. R에서 가능합니까?R을 사용하여 로컬 PNG 파일을 Word 문서에 어떻게 복사하여 붙여 넣을 수 있습니까?

패키지 R2wd을 살펴 봤지만 슬프게도 RData를 사용하고 그 음모를 워드 문서 (기능 wdPlot)로 출력하는 기능 만 있습니다.

또한 각각의 모든 플롯에 대해 저장된 RData를 가지고 있으므로 이유는 특정 플롯과 관련된 RData를로드 한 다음 wdPlot을 사용해야한다는 것을 의미합니다.

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를 얻을하려고하면 문제는 내가 생성 할 때 내 PNG의 플롯이 grobs 있었다 다음과 같이 뭔가를 한 것입니다 제목을 확대하거나 다른 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 파일을 가지고 있습니다. 여러 번 나는 그들 중 일부를 단어 문서에 복사하여 붙여 넣어야합니다. 나는 매번 수동으로 그렇게하기에는 너무 게을러서 프로그램이 나를 위해 그것을하고 싶어한다.

EDIT 1

그래서, 아래의 제안에 따라, 나는 마크 다운에 최대 읽었습니다.

```{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) 
    } 
} 

``` 

다음은 결과 워드 문서에 무엇의 스크린 샷입니다 :이 게시물 How to set size for local image using knitr for markdown? 다음 나는의 라인을 따라 뭔가를 썼다. 어떻게 해결할 수 있을까요? 위의 for 루프가 실행될 때마다 이미지가 하나씩 차례대로 나타나기를 원합니다.

enter image description here

이 내가 아무리 코멘트에 링크 된 관련 튜토리얼도 큰 도움이 될 수있는 마크 다운를 처음 사용하는 점에 유의 마십시오.

편집 2 아래의 두 번째 답변의 예를 따랐습니다. 여기에는 이미지 만 html 태그가없는 볼 수 있듯이 내가 enter image description here enter image description here

을 얻은 출력됩니다. 이 문제를 어떻게 해결할 수 있습니까?

답변

1

당신이 png 년대는 그냥 .doc 파일에 저장하기 위해 약간의 htmlfor 루프를 사용하여 저장 한 경우.

편집 창

# 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으로 호출 할 수있는 작은 매크로를 작성하여 드롭을 사용하여 2


편집 : 작은 업데이트는 출력 명시 적 경로를 보여주고 내가 경로 /home/daff/ex*.png 사이의 공간을 제거하는 paste0을 사용

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) 
} 

참고 수치입니다.

+0

나는 당신의보기가하는 것을 이해한다. 이제 각 이미지에 대한 html 태그 목록이있는 단어 문서가 있습니다. html 태그를 실제 이미지로 변경하는 방법을 알려주는 튜토리얼로 연결시켜 주시겠습니까? 나는 많은 운없이 잠시 동안 인터넷 검색을 해왔다. 또한 내 OP에서 업데이트를 보면 새로운 문제가 있음을 알 수 있습니다. – Frikster

+0

안녕하세요 더크 - 죄송합니다. w3.org 이외의 튜토리얼을 가리킬 수는 없습니다. (http://www.w3.org/MarkUp/html3/img.html). 위 코드가 수행하는 작업은 png 파일에 대한 링크를 만드는 것이며, 공백을 포함하거나 제외하는 경로가 올바르게 정의 된 경우 플롯이 표시되어야합니다. 명시 적 경로가있는 링크를 만드는 방법을 보여주기 위해 작은 업데이트 (많은 변경없이)를 추가했습니다. BTW, 플롯 및 출력 파일이 작업 디렉토리로 가야하므로 내 대답의 작은 예제가 제대로 작동 했습니까? 파일을 다른 PC로 옮기려면 이미지를 임베드해야합니다. – user20650

+0

사실, 텍스트 편집기 (예 : '')에서 파일을 열면 이미지의 경로 목록이 표시되지만 단어가있는 파일을 열면 그 파일이 표시됩니다. – user20650

2

Rstudio 및 Markdown을 사용해 보셨습니까? 코드를 워드 문서로 저장하고 파일을로드하는 청크에 넣을 수 있습니다. http://rmarkdown.rstudio.com/word_document_format.html

+0

R Markdown은 갈 길입니다. – Athos

+0

안녕하세요, 고맙습니다. 저는 RStudio를 사용합니다.하지만 이것은 Markdown에 대한 첫 번째 소식입니다. 사물의 외모로 당신이 제안한대로 모든 이미지를 저장할 수 있었지만 단어 파일에 이미지를 저장하면 모든 이미지가 서로 위에 있습니다. 어떻게 해결할 수 있을까요? 당신은 내 뜻을 보여주는 업데이트 된 나의 OP를 볼 수 있습니다. – Frikster

+1

'grid.raster'다음에 'grid.newpage()'를 사용해보세요. fig.width, fig.height 파라미터를 설정할 필요가 없습니다. – Robert