Knitr и / или Kableextra: глобальные параметры таблицы? - PullRequest
0 голосов
/ 02 мая 2019

Можно ли поручить Rmarkdown по умолчанию для всех таблиц выводить мой стиль?Вот моя попытка:

---
title: 'Test Kable Global Styling'
output:
  html_document:
    df_print: kable
---

```{r}
library(knitr)
library(kableExtra)
kable <- function(data) {
   message("YES, IT BITES!  (not sortable, but styled.)\n")
   knitr::kable(data, digits=3) %>% kable_styling(bootstrap_options = "striped", full_width = F, position = "center")
}

```


## Testing

```{r}
d <- data.frame( x=1:3, y=rnorm(3) )
```

### Explicit Invokation

```{r}
kable(d)
```

### Implicit Invokation Fails

```{r}
d
```

Вывод выглядит так:

sample failed output

[возможно, связано с КакУстанавливаем глобальные параметры knitr :: kable () в markdown для повторного использования , но Rmarkdown не может выбрать мою собственную функцию kable для ее выбора.


спасибо, таинственный пользователь, за полное решенное обновлениек вышеуказанной проблеме.увы, можно ли обобщить до:

```{r}
library(knitr)
library(DT); p <- function(...) DT::datatable(...)
knit_print.data.frame <- function(x, ...) asis_output(  paste( c("",p(x)) , collapse="\n" )  )
registerS3method("knit_print", "data.frame", knit_print.data.frame)
```

# Test Code

```{r}
d <- data.frame( x=1:3, y=rnorm(3) )
```

## Print

```{r}
p(d)

d
```

done

1 Ответ

1 голос
/ 04 мая 2019

Как вы видели, Как установить глобальные параметры knitr :: kable () в markdown для повторного использования описывает, как это сделать с явным вызовом kable, но не обрабатывает неявные отображения. Способ сделать это описан на странице справки ?knitr::knit_print. В начале документа вам понадобится такой код:

kable <- function(data, ...) {
   message("YES, IT BITES!  (not sortable, but styled.)\n")
   knitr::kable(data, digits=3, ...) %>% kable_styling(bootstrap_options = "striped", full_width = F, position = "center")
}
knit_print.data.frame <- function(x, ...) {
  res <- paste(c("", "", kable(x)), collapse = "\n")
  asis_output(res)
}
registerS3method("knit_print", "data.frame", knit_print.data.frame)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...