2.5

현재 표를 생성하는 가장 편리한 방법은 knitr::kable() 함수입니다. knitr에는 bookdown과 함께 작동하도록 하는 내부 트릭이 있으며 사용자는 이러한 구현의 세부 사항에 대해 알 필요가 없습니다. 이 섹션의 뒷부분에서 다른 패키지와 기능을 사용하는 방법에 대해 설명할 것입니다.

그림과 마찬가지로 캡션이 있는 표에도 번호가 매겨지고 참조될 수 있습니다. kable()함수는 테이블 환경에 대한 라벨을 자동으로 생성합니다. 이 라벨은 접두사 tab :과 청크 라벨입니다. 예를 들어, 라벨이 foo 인 코드 청크의 표 라벨은 tab:foo가 되며 여전히 \@ref(label) 구문을 사용하여 표를 참조할 수 있습니다. 표 2.2은 간단한 예입니다.

knitr::kable(
  head(mtcars[, 1:8], 10), booktabs = TRUE,
  caption = 'A table of the first 10 rows of the mtcars data.'
)
Table 2.2: A table of the first 10 rows of the mtcars data.
mpg cyl disp hp drat wt qsec vs
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1

단일 테이블 환경에 여러 테이블을 배치하려면 데이터 개체(일반적으로 R의 데이터 프레임)를 목록으로 래핑합니다. 예는 표 2.3을 참조하세요. 이 기능은 HTML 및 PDF 출력에서만 사용할 수 있습니다.

knitr::kable(
  list(
    head(iris[, 1:2], 3),
    head(mtcars[, 1:3], 5)
  ),
  caption = 'A Tale of Two Tables.', booktabs = TRUE
)
Table 2.3: A Tale of Two Tables.
Sepal.Length Sepal.Width
5.1 3.5
4.9 3.0
4.7 3.2
mpg cyl disp
Mazda RX4 21.0 6 160
Mazda RX4 Wag 21.0 6 160
Datsun 710 22.8 4 108
Hornet 4 Drive 21.4 6 258
Hornet Sportabout 18.7 8 360

표가 PDF에서 분리되는 것(floating)을 원치 않을 경우 여러 페이지에 걸쳐 표를 나눌 수 있는 LaTeX 패키지 longtable를 사용할 수 있습니다. longtable을 사용하려면 longtable = TRUEkable()에 전달하고 LaTeX 프리앰블 (섹션 4.1에서 LaTeX 프리앰블을 맞춤 설정하는 방법 참고)에 \usepackage{longtable}을 포함해야 합니다. 물론 이것은 HTML의 테이블은 플로팅할 필요가 없기 때문에 HTML 출력과는 무관합니다.

knitr::kable(
  iris[1:55, ], longtable = TRUE, booktabs = TRUE,
  caption = 'A table generated by the longtable package.'
)
Table 2.4: A table generated by the longtable package.
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
5.1 3.5 1.4 0.2 setosa
4.9 3.0 1.4 0.2 setosa
4.7 3.2 1.3 0.2 setosa
4.6 3.1 1.5 0.2 setosa
5.0 3.6 1.4 0.2 setosa
5.4 3.9 1.7 0.4 setosa
4.6 3.4 1.4 0.3 setosa
5.0 3.4 1.5 0.2 setosa
4.4 2.9 1.4 0.2 setosa
4.9 3.1 1.5 0.1 setosa
5.4 3.7 1.5 0.2 setosa
4.8 3.4 1.6 0.2 setosa
4.8 3.0 1.4 0.1 setosa
4.3 3.0 1.1 0.1 setosa
5.8 4.0 1.2 0.2 setosa
5.7 4.4 1.5 0.4 setosa
5.4 3.9 1.3 0.4 setosa
5.1 3.5 1.4 0.3 setosa
5.7 3.8 1.7 0.3 setosa
5.1 3.8 1.5 0.3 setosa
5.4 3.4 1.7 0.2 setosa
5.1 3.7 1.5 0.4 setosa
4.6 3.6 1.0 0.2 setosa
5.1 3.3 1.7 0.5 setosa
4.8 3.4 1.9 0.2 setosa
5.0 3.0 1.6 0.2 setosa
5.0 3.4 1.6 0.4 setosa
5.2 3.5 1.5 0.2 setosa
5.2 3.4 1.4 0.2 setosa
4.7 3.2 1.6 0.2 setosa
4.8 3.1 1.6 0.2 setosa
5.4 3.4 1.5 0.4 setosa
5.2 4.1 1.5 0.1 setosa
5.5 4.2 1.4 0.2 setosa
4.9 3.1 1.5 0.2 setosa
5.0 3.2 1.2 0.2 setosa
5.5 3.5 1.3 0.2 setosa
4.9 3.6 1.4 0.1 setosa
4.4 3.0 1.3 0.2 setosa
5.1 3.4 1.5 0.2 setosa
5.0 3.5 1.3 0.3 setosa
4.5 2.3 1.3 0.3 setosa
4.4 3.2 1.3 0.2 setosa
5.0 3.5 1.6 0.6 setosa
5.1 3.8 1.9 0.4 setosa
4.8 3.0 1.4 0.3 setosa
5.1 3.8 1.6 0.2 setosa
4.6 3.2 1.4 0.2 setosa
5.3 3.7 1.5 0.2 setosa
5.0 3.3 1.4 0.2 setosa
7.0 3.2 4.7 1.4 versicolor
6.4 3.2 4.5 1.5 versicolor
6.9 3.1 4.9 1.5 versicolor
5.5 2.3 4.0 1.3 versicolor
6.5 2.8 4.6 1.5 versicolor

Pandoc은 단순 테이블, 여러 줄 테이블, 그리드 테이블 및 파이프 테이블과 같은 여러 유형의 마크 다운 테이블을 지원합니다. knitr::kable ()이 생성하는 것은 다음과 같은 간단한 테이블입니다.

Table: A simple table in Markdown.

 Sepal.Length   Sepal.Width   Petal.Length   Petal.Width
-------------  ------------  -------------  ------------
          5.1           3.5            1.4           0.2
          4.9           3.0            1.4           0.2
          4.7           3.2            1.3           0.2
          4.6           3.1            1.5           0.2
          5.0           3.6            1.4           0.2
          5.4           3.9            1.7           0.4

문서에서 모든 유형의 마크 다운 테이블을 사용할 수 있습니다. 마크 다운 테이블을 상호 참조 할 수 있으려면Table:(\#label) Caption here 형식의 라벨이 지정된 캡션이 있어야 합니다. 여기서label에는 접두사tab:이 있어야합니다 (예 :tab:단순-테이블).

다른 R 패키지를 사용하여 테이블을 생성하기로 결정한 경우 테이블 캡션의 시작 부분에 테이블 환경의 라벨이(\#label) 형식으로 표시되는지 확인해야 합니다(다시 말하지만label에는 접두사tab:이 있어야 합니다). 테이블 생성 함수의 이동성(protability)에 대해 매우 주의해야 합니다. HTML 및 LaTeX 출력 모두에서 자동으로 작동해야하므로 내부적으로 출력 형식을 고려해야 합니다 (knit::opts_knit$get('rmarkdown.pandoc.to') 확인). HTML 테이블을 작성할 때 캡션은 <caption> </caption>태그에 작성해야 합니다. 간단한 테이블의 경우 kable()이면 충분합니다. 복잡한 테이블을 만들어야 하는 경우(예 : 특정 셀이 여러 열/행에 걸쳐있는 경우) 앞서 언급한 문제를 고려해야 합니다.