从函数返回 print xtable 包括转义字符 knitr r
Posted
技术标签:
【中文标题】从函数返回 print xtable 包括转义字符 knitr r【英文标题】:returning print xtable from a function includes escaped characters knitr r 【发布时间】:2022-01-22 08:09:57 【问题描述】: 我正在尝试使用 xtable 在 knitr 中构建表格。 某些表具有多级列名 我在函数中构建表并将函数的输出存储为变量 这些表变量随后用于构建 knitr 报告下面 Rmd 的代码
---
output:
pdf_document
---
```r setup
library(knitr)
library(xtable)
library(tidyverse)
data <- diamonds %>% head(3) %>% select(carat, cut, color, depth)
make_table <- function()
addtorow_comp <- list()
addtorow_comp$pos <- list(0,0)
addtorow_comp$command <- c("\\multicolumn3call the Cs & D \\\\\n",
"carat & cut & color & depth \\\\\n")
tmp <- xtable(data,
caption="a table",
align = c('l|','c0.3in', 'c0.4in','c0.4in|', 'c0.4in|'),
digits= c(0,0,0,0,1))
return(print(tmp, add.to.row = addtorow_comp,
include.colnames = FALSE,
rotate.colnames = FALSE,
include.rownames = FALSE,
type="latex"))
tbl_to_output <- make_table()
```
```r output_table, results="asis", cache=FALSE
tbl_to_output
```
tbl_to_output
输出带有包含转义字符的文本的乳胶,例如\\ 表示单个斜杠,\n 表示换行符。如果我要直接从 output_table
块运行打印命令,它工作正常,但我想将表的构建与它们显示的位置分开。
期望的输出:
从函数返回时的输出:
【问题讨论】:
【参考方案1】:我添加了一些更正和 cmets,现在它可以工作了:
---
output:
pdf_document
---
```r setup, results='asis', echo=FALSE, include=FALSE
library(knitr)
library(xtable)
library(tidyverse)
data <- diamonds %>% head(3) %>% select(carat, cut, color, depth)
make_table <- function()
addtorow_comp <- list()
addtorow_comp$pos <- list(0,0)
addtorow_comp$command <- c("\\multicolumn3call the Cs & D \\\\\n",
"carat & cut & color & depth \\\\\n")
tmp <- xtable(data,
caption="a table",
align = c('l|','c@0.3in', 'c@0.4in','c@0.4in|', 'c@0.4in|'), #don't forget about @
digits= c(0,0,0,0,1))
return(print(tmp, add.to.row = addtorow_comp,
include.colnames = FALSE,
rotate.colnames = FALSE,
include.rownames = FALSE,
type="latex",
table.placement="H",
comment=FALSE)) #hold pos and no comments
#tbl_to_output <- make_table()
```
```r xtable, results='asis', echo=FALSE, message=FALSE
tbl_to_output <- make_table()
```
补充:
你也可以这样做:
\beginfigure
`r tbl_to_output`
\endfigure
【讨论】:
遗憾的是,我需要'''r xtable
仅使用变量调用,不应在那里进行任何函数调用
@pluke 查看添加内容。如果我帮助了你 - 你可以接受我的回答,谢谢 ;)
感谢@manro 这行得通,可惜有 npo vanhilla 块的方式来做到这一点
@pluke 如果不是秘密,为什么不想在其他块中使用make table
这个功能?
我在其他地方以编程方式创建了很多表,并希望尽可能使 Rmd 文件清晰。这当然是一个选择!我也很好奇是否有这样的方法以上是关于从函数返回 print xtable 包括转义字符 knitr r的主要内容,如果未能解决你的问题,请参考以下文章