当rmarkdown用于在RStudio中编织文档时,我想使用特定的函数来打印data.frame(在我的例子中,pander获取多行表).该rmarkdown包文件说,除了可以传递到四个有效方法df_print,我还可以通过它的任意函数:
除了命名方法,您还可以传递用于打印数据帧的任意函数.
我想df_print在YAML标头中设置选项:
output:
pdf_document:
df_print: pander
Run Code Online (Sandbox Code Playgroud)
但是,当在RStudio中使用Knit按钮时,它出错了,说:
Error: Invalid value for df_print (valid values are default, kable, tibble, paged
Execution halted
Run Code Online (Sandbox Code Playgroud)
但是,当我render直接调用该函数时:
render("example.Rmd", pdf_document(df_print = pander))
Run Code Online (Sandbox Code Playgroud)
文档渲染得很好,我得到了我想要的PDF文件.当我使用Knit按钮时,RStudio是否会插入到编织过程中,当我render直接调用它时它不会?为什么我也不能在YAML头中传递任意函数?
我也尝试过pander::pander,但这没有帮助.
我想创建多个聚合数据集的各个子集的变量.有关说明示例,请说明您有以下数据:
DT = data.table(Group1 = c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4),
Group2 = c(1,1,1,2,2,1,1,2,2,2,1,1,1,1,2,1,1,2,2,2),
Var1 = c(1,1,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0))
Run Code Online (Sandbox Code Playgroud)
我想找几个变量的平均值Var1.我想知道:
mean(Var1) 分组 Group1mean(Var1)仅适用于那些Group2 == 1分组的人Group1mean(Var1)仅适用于那些Group2 == 2分组的人Group1或者,在data.table用语中,
DT[, mean(Var1), by=Group1]
DT[Group2==1, mean(Var1), by=Group1]
DT[Group2==2, mean(Var1), by=Group1]
Run Code Online (Sandbox Code Playgroud)
显然,计算其中任何一个都非常简单.但我无法找到计算所有这三个的好方法,因为它们使用不同的子集i.到目前为止我一直在使用的解决方案是单独生成它们,然后将它们合并到一个统一的表中.
DT_all <- DT[, .(avgVar1_all = mean(Var1)), by = Group1]
DT_1 <- DT[Group2 == 1, .(avgVar1_1 = mean(Var1)), by = Group1]
DT_2 <- DT[Group2 == 2, .(avgVar1_2 = mean(Var1)), by = Group1]
group_info <- merge(DT_all, DT_1, …Run Code Online (Sandbox Code Playgroud)