2017-05-09 2 views
0

변수의 각기 다른 레벨에 대해 테이블로 편직 할 수있는 모듈을 만들고 싶습니다. 최종 출력은 지정된 각 값에 대해 하나의 고유 한 테이블이어야합니다.kable 함수의 출력을 모듈화하는 방법은 무엇입니까?

예를 들어, 데이터 세트 iris에서, 변수 Species 나는 아래의 코드를 사용하여 setosa에 대한 테이블을 생성 할 수 있습니다

c("setosa", "versicolor", "virginica" 있습니다

library(knitr) 
    library(dplyr) 
    g <- 'setosa' 
    iris %>% filter(Species==g) %>% 
summarise(avg=mean(Sepal.Width)) %>% 
kable(caption=paste('Results for',g)) 

을하지만 더 효율적 싶습니다 (즉, setosa, versicolor 및 virginica)로 출력을 인쇄하기 위해 값의 벡터를 전달합니다. 이 경우에는 Species로 그룹화 할 수 있지만 원본 코드의 출력량이 더 많아서 다른 테이블에 인쇄하려고합니다.

답변

0

당신은 벡터를 통해 기능과 루프를 만들 수 있습니다

library(purrr) 
print_kable <- function(species) { 
     iris %>% filter(Species == species) %>% 
      summarise(avg=mean(Sepal.Width)) %>% 
      kable(caption=paste('Results for', species)) %>% 
      print() 
     } 

walk(.x = c("setosa", "versicolor", "virginica"), print_kable) 

편집

을 인하 문서의 경우, 코드 청크는 다음과 같이한다 :

```{r results='asis'} 
library(dplyr) 
library(knitr) 
library(purrr) 
print_kable <- function(species) { 
     iris %>% filter(Species == species) %>% 
      summarise(avg=mean(Sepal.Width)) %>% 
      kable(caption=paste('Results for', species)) %>% print() 
} 
walk(c("setosa", "versicolor", "virginica"), print_kable) 
``` 
+0

감사합니다, '필터에 오류가 있습니다. (., Species = 종) :'종 '을 찾을 수 없습니다.' – Dambo

+0

언급하는 것을 잊었습니다 : 뜨다 때만 나타납니다 (pd f) – Dambo

+0

흠, PDF를 생성 할 때 작동했습니다. 어떤 dplyr 버전을 사용하고 있습니까? – Sraffa

관련 문제