将文件中的html表格输入R标记,编织到Word?

将文件中的html表格输入R标记,编织到Word?,html,r,r-markdown,stargazer,Html,R,R Markdown,Stargazer,我正在使用一个R标记文件,我们需要能够将其编织成pdf和Word(对于合著者)。我们还在stargazer中生成了回归表,由于数据的大小,这些回归表单独计算,并创建了两个文件:regression_table.tex和regression_table.html 当编织成pdf时,我可以使用latex命令\input轻松地将表格添加到R标记中 \input{"regression_table.tex"} 不过,对于Word,我还没有找到一个简单的html文件等价于\input

我正在使用一个R标记文件,我们需要能够将其编织成pdf和Word(对于合著者)。我们还在
stargazer
中生成了回归表,由于数据的大小,这些回归表单独计算,并创建了两个文件:regression_table.tex和regression_table.html

当编织成pdf时,我可以使用latex命令
\input
轻松地将表格添加到R标记中

\input{"regression_table.tex"}
不过,对于Word,我还没有找到一个简单的html文件等价于
\input
。一个选项是在Word中手动插入html表格文件,作为一个低技术备份选项,它可以很好地工作。另一个部分解决方案使用来自的修改代码。有了下面的代码块,我可以编织成html,然后将html文档导入Word。这将保持表格格式,但其他格式(如标题和数字)会出现混乱

```{r echo = FALSE, results = 'asis'}
tmp <- paste(readLines(here("regression_table.html")), collapse="\n")

cat(tmp)
```
`{r echo=FALSE,results=asis}

tmp这不是一个理想的解决方案,但是,使用
webshot
包,可以很容易地将html文件转换为图像文件,然后使用
knitr::include_graphics
将其导入R Markdown。这种方法的三个优点是:(1)自动工作;(2) 它能很好地保存格式;(3)它可以与其他制表包或任何外部html文件(或网页)一起使用。此外,我在顶部添加了一些代码,因此Rmd会自动合并正确的外部文件(.tex或.html),具体取决于我是使用pdf还是word

```{r create_output_logicals, include = FALSE}
# https://stackoverflow.com/questions/62389948/knitris-word-output-to-check-if-the-current-output-type-is-word-just-like

is_word_output <- function(fmt = knitr:::pandoc_to()) {
  length(fmt) == 1 && fmt == "docx"
}

# create logical variables that indicate knitting output format 
latex_lgl <- knitr::is_latex_output()
html_lgl  <- knitr::is_html_output()
word_lgl  <- is_word_output()
```

```{r load_packages, include = FALSE}
library(stargazer)
library(webshot)
```

```{r create_table, include = FALSE}    
lm1 <- lm(mpg ~ wt,       data = mtcars)
lm2 <- lm(mpg ~ wt + cyl, data = mtcars)

stargazer(
  lm1, lm2, 
  type   = 'html', 
  header = FALSE, 
  out    = 'regression_table.html'
)

stargazer(
  lm1, lm2, 
  type   = 'latex', 
  header = FALSE, 
  out    = 'regression_table.tex'
)
```

```{r regression_table_word, echo = FALSE, eval = word_lgl}

webshot(
    url  = "regression_table.html", 
    file = "regression_table.png",
    zoom = 2   # doubles the resolution
)

knitr::include_graphics("regression_table.png")

```

```{r regression_tables_tex, results = 'asis', echo = FALSE, eval = latex_lgl}
# if not knit to word document, use latex \input for tex tables
# line spacing assumes YAML/header includes: \usepackage{setspace}
# header-includes: |
#   \usepackage{setspace}\doublespacing

cat(
'\\singlespacing
 \\input{"regression_table.tex"}
 \\doublespacing'
)
```
`{r创建输出逻辑,include=FALSE}
# https://stackoverflow.com/questions/62389948/knitris-word-output-to-check-if-the-current-output-type-is-word-just-like

“word”输出是否将表保存为Rdata文件并加载该文件?这是一个很好的建议,但事实证明stargazer对象与保存到html文件中的html文本字符串相同。您的想法还帮助我认识到,在最简单的情况下,在Rmd中以html格式创建stargazer表并与Word连接(即,没有外部文件),该表仍然无法与Word顺利连接。简言之,使用
out
选项保存的独立stargazer html文件在Word中可以顺利打开,但在Rmd中生成或导入到Rmd中的stargazer输出与Word结合不好。