DT::datatable Rmarkdown 报告中的分组数据框 (HTML)
DT::datatable on grouped dataframe within Rmarkdown report (HTML)
我有一个分组数据框输出,我想在 Rmarkdown 报告 (HTML) 中将其可视化为带有下载按钮 (csv,excel) 的 DT::datatable。
当我构建 Rmarkdown 时它工作正常,但显示错误提示没有适用于对象 类 数据表和 htmlwidgets 的分组方法。
非常感谢。
这是我的代码:
## Grouping columns
Site <- LETTERS[1:6]
Block <- LETTERS[1:4] ## For each Site
Plot <- paste(rep("P",10),seq(1,10,1),sep="_") ## For each Block
df <- expand.grid(Site = Site, Block = Block, Plot = Plot)
## Dependant variables
df <-cbind.data.frame(df,data.frame(Tmin=runif(min=-3,max=18,n=240),
Tmax=runif(min=10,max=39, n=240),
Index1=runif(0,5,n=240),
Index2=runif(1,10,n=240)))
# Export grouped df as datatable
library(dplyr)
df%>%
group_by(Site,Block,Plot)%>%
summarize(Tmin_avg=mean(Tmin), Tmax_avg=mean(Tmax))%>%
DT::datatable(
extensions = 'Buttons', options = list(
dom = 'Bfrtip',
buttons =
list('copy', 'print', list(
extend = 'collection',
buttons = c('csv', 'excel', 'pdf'),
text = 'Download'
))
))
您忘记汇总数据,您应该从汇总函数中删除 ...
。 ...
用于函数内部,使用户可以灵活地将现有参数添加到函数中。例如
library(tidyverse)
aggfun <- function(df, ...) {
df%>%
group_by(Site,Block,Plot)%>%
summarize(Tmin_avg=mean(Tmin), Tmax_avg=mean(Tmax), ...)%>%
DT::datatable(
extensions = 'Buttons', options = list(
dom = 'Bfrtip',
buttons =
list('copy', 'print', list(
extend = 'collection',
buttons = c('csv', 'excel', 'pdf'),
text = 'Download'
))
))
}
aggfun(df, T_min = min(Tmin))
如果您进行以下更改,您的示例将有效:
df%>%
group_by(Site,Block,Plot)%>%
summarize(Tmin_avg=mean(Tmin), Tmax_avg=mean(Tmax))%>%
DT::datatable(
extensions = 'Buttons', options = list(
dom = 'Bfrtip',
buttons =
list('copy', 'print', list(
extend = 'collection',
buttons = c('csv', 'excel', 'pdf'),
text = 'Download'
))
))
我有一个分组数据框输出,我想在 Rmarkdown 报告 (HTML) 中将其可视化为带有下载按钮 (csv,excel) 的 DT::datatable。
当我构建 Rmarkdown 时它工作正常,但显示错误提示没有适用于对象 类 数据表和 htmlwidgets 的分组方法。
非常感谢。
这是我的代码:
## Grouping columns
Site <- LETTERS[1:6]
Block <- LETTERS[1:4] ## For each Site
Plot <- paste(rep("P",10),seq(1,10,1),sep="_") ## For each Block
df <- expand.grid(Site = Site, Block = Block, Plot = Plot)
## Dependant variables
df <-cbind.data.frame(df,data.frame(Tmin=runif(min=-3,max=18,n=240),
Tmax=runif(min=10,max=39, n=240),
Index1=runif(0,5,n=240),
Index2=runif(1,10,n=240)))
# Export grouped df as datatable
library(dplyr)
df%>%
group_by(Site,Block,Plot)%>%
summarize(Tmin_avg=mean(Tmin), Tmax_avg=mean(Tmax))%>%
DT::datatable(
extensions = 'Buttons', options = list(
dom = 'Bfrtip',
buttons =
list('copy', 'print', list(
extend = 'collection',
buttons = c('csv', 'excel', 'pdf'),
text = 'Download'
))
))
您忘记汇总数据,您应该从汇总函数中删除 ...
。 ...
用于函数内部,使用户可以灵活地将现有参数添加到函数中。例如
library(tidyverse)
aggfun <- function(df, ...) {
df%>%
group_by(Site,Block,Plot)%>%
summarize(Tmin_avg=mean(Tmin), Tmax_avg=mean(Tmax), ...)%>%
DT::datatable(
extensions = 'Buttons', options = list(
dom = 'Bfrtip',
buttons =
list('copy', 'print', list(
extend = 'collection',
buttons = c('csv', 'excel', 'pdf'),
text = 'Download'
))
))
}
aggfun(df, T_min = min(Tmin))
如果您进行以下更改,您的示例将有效:
df%>%
group_by(Site,Block,Plot)%>%
summarize(Tmin_avg=mean(Tmin), Tmax_avg=mean(Tmax))%>%
DT::datatable(
extensions = 'Buttons', options = list(
dom = 'Bfrtip',
buttons =
list('copy', 'print', list(
extend = 'collection',
buttons = c('csv', 'excel', 'pdf'),
text = 'Download'
))
))