2017-11-14 4 views
3

다른 정보가 들어있는 두 개의 테이블이 있지만 사이트가 공통 인 RMarkdown에서 보고서를 자동화하려고합니다. 각 사이트마다 하나씩 요약 보고서를 만들 수 있도록 루프를 작성했지만 테이블 중 하나를 작동시키지 못합니다. 첫 번째 테이블은 항상 동일한 정보를 생성하지만 두 번째 테이블은 각 고유 한 사이트에 대해 정확합니다. 지금까지이 게시물에 사용되었다두 테이블의 RMarkdown에있는 루프가 일치하지 않습니다. 출력이 일치하지 않습니다.

: R Knitr PDF: Is there a posssibility to automatically save PDF reports (generated from .Rmd) through a loop?를하지만 같은 문서에서 같은 사이트를 인쇄 할 두 개의 루프를 얻을 수 없습니다

R 스크립트 :

set.seed(100) 
Site<-c("A","B","C","D","E") 
Species<-c("a","b","c","d","e") 
Count<-rnorm(40,20,20) 
df1<-data.frame(Site,Species,Count) 
df1 

Habitat<-c("v","w","x","y","z") 
Size<-rnorm(40,20,20) 
df2<-data.frame(Site,Habitat,Size) 
df2 

library(tidyverse) 
library(rmarkdown) 

Habitats<-df2 %>% 
    group_by(Site, Habitat) %>% 
    summarise(Total_Size=sum(Size)) 
Habitats 
report1<-filter(Habitats,Site=='A') 
report1 

Species<-df1 %>% 
    group_by(Site,Species) %>% 
    summarise(Total_Count=sum(Count)) 
Species 

#Habitats loop, but this bit doesn't work 
for(Site in unique(Habitats$Site)){ 
    subgroup1<-Habitats[Habitats$Site == Site,] 
    render("C:/Users/TVERC/Documents/GIS DataBase/P17-19 National Trust/template.rmd", output_file = paste0('report.', Site, '.html')) 
} 

#Species loop 
for(Site in unique(Species$Site)){ 
    subgroup2<-Species[Species$Site == Site,] 
    render("C:/Users/TVERC/Documents/GIS DataBase/P17-19 National Trust/template.rmd", output_file = paste0('report.', Site, '.html')) 
} 

template.rmd :

```{r, echo=FALSE} 
#Report Analysis 
Habs<-filter(subgroup1) 
Habs 
``` 

```{r, echo=FALSE} 
Spp<-filter(subgroup2) 
Spp 
``` 

어떻게하면됩니까? 3, 4 또는 5 개의 테이블을 모두 같은 사이트와 관련된 데이터로 사용하려면 솔루션도 사용할 수 있습니까? 당신의 template.rmd에서

답변

0

당신은

{r, echo=FALSE} Spp<-filter(subgroup2) Spp subgroup2를 호출하지만 두 번째 루프를 입력 전까지는 만들어지지 않습니다. 그것은 아직 존재하지 않는

#Species loop 
for(Site in unique(Species$Site)){ 
    subgroup2<-Species[Species$Site == Site,] 
    render("C:/Users/TVERC/Documents/GIS DataBase/P17-19 National Trust/template.rmd", output_file = paste0('report.', Site, '.html')) 
} 

그래서 당신은

#Habitats loop, but this bit doesn't work 
for(Site in unique(Habitats$Site)){ 
    subgroup1<-Habitats[Habitats$Site == Site,] 
    render("C:/Users/TVERC/Documents/GIS DataBase/P17-19 National Trust/template.rmd", output_file = paste0('report.', Site, '.html')) 
} 

을 실행할 때. 아마 그 라인을 따라 뭔가 도움이 될까요?

for(Site in unique(c(Species$Site,Habitats$Site)){ 
    subgroup1<-Habitats[Habitats$Site == Site,] 
    subgroup2<-Species[Species$Site == Site,] 
    render("C:/Users/TVERC/Documents/GIS DataBase/P17-19 National Trust/template.rmd", output_file = paste0('report.', Site, '.html')) 
} 
+0

감사합니다. @Cedric하지만 '$ 연산자는 원자 벡터에 유효하지 않습니다.'라는 오류가있어이 기능이 작동하지 않습니다. 원자 벡터에 대한 속성을 가질 수 없기 때문입니다. 어떤 제안을 해주시겠습니까? –

+0

@ Dan. 미안 해요, 당신 말이 맞아요. 서식지가있는 서식지를 바꾸는 오타입니다. 제 자신의 대본을 수정하고 테스트 했으니 까. – Cedric

관련 문제