#r #r-markdown #lapply
#r #r-markdown #lapply
Вопрос:
вот мой фрейм данных
dt <-
data.frame(
year = c(2018, 2019, 2020),
sales = c(123, 987, 852)
)
В моем документе markdown я печатаю данные таким образом
datatable(
dt,
escape = F,
rownames = F,
filter = 'top',
options = list(
pageLength = 999,
dom = "t",
columnDefs = list(list(className = "dt-center", targets = "_all")),
ordering = T)
) %>%
formatCurrency(c("sales"), digits = 1)
Мой фактический фрейм данных намного больше, я бы хотел разделить его по годам и печатать каждый год в отдельной таблице данных. Также я хотел бы распечатать заголовок h4 для каждого раздела.
Я экспериментировал с lapply таким образом, но я не могу заставить его печатать в markdown, и я не знаю, как добавить этот заголовок.
t_list <-
lapply(split(dt, dt$year), function(df) {
datatable(
df,
escape = F,
rownames = F,
filter = 'top',
options = list(
pageLength = 999,
dom = "t",
columnDefs = list(list(className = "dt-center", targets = "_all")),
ordering = T)
) %>%
formatCurrency(c("sales"), digits = 1)
})
Комментарии:
1. Попробуйте не назначать
lapply
вызов или вызвать переменнуюt_list
в ее отдельной строке. Кстатиlapply
,split
можно заменить наby
: `by(dt, dt$year, function(df) …) .
Ответ №1:
Вы могли бы использовать htmltools::tagList
:
```{r}
library(DT)
t_list <-
lapply(split(dt, dt$year), function(df) {
year <- unique(df$year)
htmltools::tagList(htmltools::h4(year),datatable(
df,
escape = F,
rownames = F,
filter = 'top',
options = list(
pageLength = 999,
dom = "t",
columnDefs = list(list(className = "dt-center", targets = "_all")),
ordering = T)
) %>%
formatCurrency(c("sales"), digits = 1))
})
htmltools::tagList(t_list)
```