HTML 출력을 편직 할 때 데이터 프레임을 인쇄하기 위해 사용자 정의 함수를 RMarkdown YAML df_print에 전달합니다.

Jamie_R

이것은 Stack Overflow에 대한 나의 첫 번째 게시물이므로 이것이 잘못 구성되었거나 재현 불가능한 질문 인 경우 용서해 주시기 바랍니다. 다음 사용자 지정 데이터 테이블 인쇄 기능 ( 'print.me')을 RMarkdown의 YAML 헤더에 전달하여 df_print를 HTML로 뜨개질하려고합니다.

print.me <- function(x) {
  x <- x %>% kbl(digits=2, align= 'l', booktabs=T) %>% 
   kable_styling(fixed_thead = T, position ="float_right") %>% 
   kable_paper("striped", full_width = T, fixed_thead = T, 
   html_font = "Helvetica", font_size = 11) %>% 
   row_spec(0, color = "yellow", background = "#5b705f", font_size = 12) %>% 
   scroll_box(width = "700px", height = "300px")
   return(x)
}

이 함수는 RMarkdown에서 mtcar를 인쇄 할 때 원하는 데이터 프레임 형식을 성공적으로 렌더링합니다.

여기에 이미지 설명 입력

문제는 'print.me'를 YAML 헤더에 성공적으로 전달하는 방법을 알아낼 수 없어서 'print.me'가 HTML로 뜨개질 할 때 데이터 프레임을 렌더링하는 기본 방법이된다는 것입니다. YAML 헤더의 코드는 다음과 같습니다.

df_print: !expr 'print.me'

그러나 다음과 같은 오류 메시지가 나타납니다.

오류 : 개체 'print.me'를 찾을 수 없습니다. 오류 in yaml :: yaml.load (..., eval.expr = TRUE) : ​​식을 평가할 수 없습니다. print.me 호출 : ... parse_yaml_front_matter-> yaml_load-> 실행 중단

df_print이 가능하다는 것을 문서의 주장에 임의의 기능을 전달하는 df_print, 내가 해결에 도달 한 것으로 보인다 과거의 게시물을 발견했다,하지만 난 내 인생은 헤더에서이 함수를 호출하는 방법을 알아낼 수 없기 때문. 도움을 주셔서 감사합니다! ~ 제이미

엄마

rmarkdown 문서 에서 이것을 찾을 수 없었지만df_print YAML 헤더 인수에 귀하와 같은 복잡한 함수를 전달하는 것이 권장되지 않는다고 생각합니다 . 그러나 GitHub 의이 문제 (간단한 버전)에 print.me()따르면 다음과 같이 진행됩니다.

---
title: "testprint" 
output: 
  html_document:
    df_print: !expr print.me <- function(x, ...) { knitr::asis_output(kableExtra::kbl(x, digits=2, align= 'l'))}
---

대신 다음과 같이 코드 청크 (바람직하게는 YAML 헤더 바로 뒤에)에 데이터 프레임을 인쇄하는 자체 메서드를 등록 할 수 있습니다.

```{r setup, include=FALSE}
library(kableExtra)
library(knitr)

print.me <- function(x, ...) {
   x %>% 
   kbl(digits=2, align= 'l', booktabs=T) %>% 
   kable_styling(fixed_thead = T, position ="float_right") %>% 
   kable_paper("striped", full_width = T, fixed_thead = T, 
               html_font = "Helvetica", font_size = 11) %>% 
   row_spec(0, color = "yellow", background = "#5b705f", font_size = 12) %>% 
   scroll_box(width = "700px", height = "300px") %>% 
   asis_output()
}

registerS3method("knit_print", "data.frame", print.me)
```

기술적 세부 사항은 약간 복잡합니다. 간단히 말해, 인쇄 할 객체의 클래스를 확인할 때 호출되는 기본 함수 (geeks는이 프로 시저 메서드 dispatch라고 함 )를 사용자 지정 함수로 덮어 쓰고이 메서드를 knitr에 등록합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관