이것은 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] 삭제
몇 마디 만하겠습니다