R Markdown渲染gt表格前意外输出源数据问题排查
R Markdown输出gt表格前出现多余源数据的解决方法
核心原因
你在创建housegt对象的代码块中,有两行未做赋值的语句:head(dt_nv)、dcast(dt_nv,Year~Month,value.var="hpa_yoy")。R默认会打印所有无赋值操作的返回值,即便你设置了echo=FALSE隐藏代码,运行产生的输出依然会被插入到文档中,就是你看到的多余源数据内容。
另外你代码中的管道符存在断行错误:%>%被拆成了两行单独的%,会引发语法报错,需要合并成完整的管道符放在上一行末尾。
修复方案
- 直接删除上述两行不需要保留的预览代码,或者给代码加上赋值操作避免自动打印,比如改成
tmp <- head(dt_nv)、tmp <- dcast(dt_nv,Year~Month,value.var="hpa_yoy") - 建议给代码块补充
warning=FALSE参数,屏蔽无关的警告信息
修改后的代码示例
```{r, echo=FALSE,comment=FALSE,message=FALSE,warning=FALSE} # 加载数据 dt <- fread("http://www.freddiemac.com/fmac-resources/research/docs/fmhpi_master_file.csv") dt[,hpa_yoy:=Index_SA/shift(Index_SA,12)-1,.(GEO_Type,GEO_Code,GEO_Name)] dt_nv<- dt[GEO_Name=="NV" & Year>2010,] # 已注释掉多余的预览代码 # head(dt_nv) # dcast(dt_nv,Year~Month,value.var="hpa_yoy") dt_nv[,mname:=factor(month.abb[Month],levels=month.abb)] dt_tab <- dcast(dt_nv,Year~mname,value.var="hpa_yoy") house<- gt(dt_tab) %>% opt_row_striping() %>% fmt_percent( columns = c(month.abb), decimals = 1, use_seps = FALSE ) %>% tab_header(title="内华达州房价增速", subtitle="房地美房价指数12个月同比变化率" ) %>% tab_options( data_row.padding = px(9), row_group.padding = px(9), table.font.size = px(11), source_notes.font.size = px(11), source_notes.padding = px(9))
修改后重新编织文档,多余的源数据输出就会消失。 内容的提问来源于stack exchange,提问作者Tim Wilcox
相关产品推荐
相关产品推荐

