我是新来的,但我在 R 上花了几个小时。我正在使用 R 包 Drake 与 knit 的组合。 但是我的 Rmarkdown 文件有错误。我有一个与 drake 示例类似的结构(https://github.com/ropensci/drake),我在其中加载数据,制作图表,然后绘制图表和统计分析的汇总表(使用 R 包) kableextra)。
当我选择 .tex 文件时,一切正常,我的 Rmarkdown 文件上有以下几行
output: latex_document
tables: true
graphics: yes
以及德雷克计划
report = rmarkdown::render(
knitr_in("Reports/report.Rmd"),
output_file = "report.tex")
但是当我想要一个已编译的 pdf 文件作为输出,其中 rmarkdown 标头包含以下几行:
output:
pdf_document:
latex_engine: xelatex
tables: true
graphics: yes
和德雷克
report = rmarkdown::render(
knitr_in("Reports/report.Rmd"),
output_format = "pdf_document",
output_file = "report.pdf")
我收到一条错误消息:
`! Undefined control sequence.
<template> ...\hskip 1sp\d@llarbegin \columncolor
[HTML]{BBBBBB}\ignorespaces
l.178 \em{Predictors} & \em
{Coefficients} & \em{SE} & \em{P-value} & \em{Coe...
x fail report
Erreur : target report failed.
diagnose(report)$error$message:
LaTeX failed to compile report.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips. See report.log for more info.`
于是我就在网上搜索了这个错误,并到易辉网站上进行了查找。我从计算机上卸载了所有 TexLive,我卸载并重新安装了 rmarkdown 和tinytex。但它不起作用并且仍然出现此错误。 该错误发生在 kableextra 包中的表之前。所以我发现其他人说添加
options(kableExtra.latex.load_packages = FALSE)
可以帮助或在 rmarkdown 的标题上添加 booktabs̀
和 makecell
。但它仍然不起作用:-/我错过了任何想法或潜在的链接吗?
更新可重现的示例
---
title: "Knitr and analysis"
author: "VJ"
output:
pdf_document:
latex_engine: xelatex
tables: true
graphics: yes
---
# Example
```{r content, echo = FALSE, include=FALSE}
#tinytex::install_tinytex()
# output:
# pdf_document:
# latex_engine: xelatex
#pdf_document or latex_document
#latex_engine: xelatex
library(glmmTMB)
library(tinytex)
library(drake)
library(tidyverse)
library(pander)
#options(kableExtra.latex.load_packages = FALSE)
library(kableExtra)
options(kableExtra.latex.load_packages = FALSE)
data("iris")
```
```{r analysis qty, echo = FALSE}
#outputs table from four model
fitFc = glmmTMB(Sepal.Width ~ Petal.Length +
Species,
iris,
family = gaussian)
fitFc1 <- as.data.frame(coef(summary(fitFc))$cond)
varname1 <- c("Intercept", "PL", "Plant 1 - Versicolor", "Plant 2 - Virginica")
fitFc1 <- cbind(varname1,fitFc1)
rownames(fitFc1) <- NULL
m1 <- fitFc1 %>% select(1,2,3,5) %>%
rename("Predictors" = 1,
"Coefficients" = 2,
"SE" = 3,
"pvalue" = 4) %>%
mutate(pvalue = format.pval(pvalue, eps = .001, digits = 1)) %>%
mutate_at(vars(-pvalue, -Predictors), ~round(., 2))
#bold significant pvalue and then create output summary from glmm
m1$pvalue<- cell_spec(m1$pvalue, bold = ifelse(m1$pvalue< 0.05, TRUE, FALSE))
kable(m1, format = "latex", booktabs = T, caption = "Summary of linear model (LMMs).",
col.names = c("Predictors",
"Coefficients",
"SE",
"P-value"), escape = F) %>%
kable_styling(latex_options = c("hold_position")) %>%
column_spec(2:4,background = "#BBBBBB") %>%
kable_styling() %>%
add_header_above(c(" " = 1, "LMM1" = 3), bold = T) %>%
row_spec(0, bold = FALSE, italic = T)
```
这是我的 sessionInfo() 的详细信息
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.5 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
locale:
[1] LC_CTYPE=fr_FR.UTF-8 LC_NUMERIC=C LC_TIME=fr_FR.UTF-8
[4] LC_COLLATE=fr_FR.UTF-8 LC_MONETARY=fr_FR.UTF-8 LC_MESSAGES=fr_FR.UTF-8
[7] LC_PAPER=fr_FR.UTF-8 LC_NAME=C LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=fr_FR.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] kableExtra_1.1.0 tinytex_0.25 pander_0.6.3 sjstats_0.18.0 sjPlot_2.8.4
[6] glmmTMB_1.0.2.1 lmerTest_3.1-2 lme4_1.1-23 Matrix_1.2-18 ggeffects_0.15.1
[11] effects_4.2-0 carData_3.0-4 cowplot_1.0.0 forcats_0.5.0 stringr_1.4.0
[16] dplyr_1.0.0 readr_1.3.1 tidyr_1.1.0 tibble_3.0.1 ggplot2_3.3.2
[21] tidyverse_1.3.0 drake_7.12.4 purrr_0.3.4
loaded via a namespace (and not attached):
[1] minqa_1.2.4 colorspace_1.4-1 ellipsis_0.3.1 sjlabelled_1.1.6
[5] estimability_1.3 parameters_0.8.2 fs_1.4.2 rstudioapi_0.11
[9] farver_2.0.3 fansi_0.4.1 mvtnorm_1.1-1 lubridate_1.7.9
[13] xml2_1.3.2 splines_4.0.2 knitr_1.29 sjmisc_2.8.5
[17] jsonlite_1.7.0 nloptr_1.2.2.2 broom_0.5.6 dbplyr_1.4.4
[21] effectsize_0.3.2 compiler_4.0.2 httr_1.4.1 emmeans_1.4.8
[25] backports_1.1.8 assertthat_0.2.1 survey_4.0 cli_2.0.2
[29] htmltools_0.5.0 prettyunits_1.1.1 tools_4.0.2 igraph_1.2.5
[33] coda_0.19-3 gtable_0.3.0 glue_1.4.1 Rcpp_1.0.5
[37] cellranger_1.1.0 vctrs_0.3.1 nlme_3.1-147 insight_0.9.0
[41] xfun_0.16 rvest_0.3.5 lifecycle_0.2.0 statmod_1.4.34
[45] MASS_7.3-51.6 scales_1.1.1 hms_0.5.3 parallel_4.0.2
[49] TMB_1.7.18 RColorBrewer_1.1-2 yaml_2.2.1 stringi_1.4.6
[53] bayestestR_0.7.2 filelock_1.0.2 boot_1.3-25 storr_1.2.1
[57] rlang_0.4.7 pkgconfig_2.0.3 evaluate_0.14 lattice_0.20-41
[61] labeling_0.3 tidyselect_1.1.0 magrittr_1.5 R6_2.4.1
[65] generics_0.0.2 base64url_1.4 txtq_0.2.3 DBI_1.1.0
[69] mgcv_1.8-31 pillar_1.4.4 haven_2.3.1 withr_2.2.0
[73] survival_3.2-3 nnet_7.3-14 performance_0.4.8 modelr_0.1.8
[77] crayon_1.3.4 utf8_1.1.4 rmarkdown_2.3.3 progress_1.2.2
[81] grid_4.0.2 readxl_1.3.1 blob_1.2.1 reprex_0.3.0
[85] digest_0.6.25 webshot_0.5.2 xtable_1.8-4 numDeriv_2016.8-1.1
[89] munsell_0.5.0 viridisLite_0.3.0 mitools_2.4```
当我收到此类问题时,我尝试做的第一件事就是在外部的 R 控制台中重现错误
drake
。通常,这些类型的错误不是由于 drake
本身造成的,而是由于 drake
需要您编写额外的自定义代码。在这种情况下,报告将使用 RStudio IDE 中的 Knit 按钮运行,而不是使用 rmarkdown::render("report.Rmd")
。这让我相信问题出在报告中的某个地方,我们的 TeX 配置,tinytex
、kable
、kableExtra
或 pander
。我建议将此问题重新发布为 R Markdown/LaTeX 问题,而不是 drake
问题,以便您可以找到合适的人来帮助您。
详细说明我的尝试:
report.pdf
文件。rmarkdown::render("report.Rmd")
外部的 R 控制台中使用 drake
运行报告时,我得到 "! Undefined control sequence. <template> ...\hskip 1sp\d@llarbegin \columncolor [HTML]{BBBBBB}\ignorespaces"
。column_spec(2:4,background = "#BBBBBB")
并再次运行 rmarkdown::render("report.Rmd")
时,我收到一个新错误:"! Extra alignment tab has been changed to \cr. <recently read> \endtemplate
。另一件事:R 社区正试图淘汰
iris
数据集,因为它与优生学研究有关:https://armchairecology.blog/iris-dataset/、https://www.garrickadenbuie.com/博客/让-从-iris 上移动/。请尽可能避免。 penguins
数据集是一个很好的替代品:https://github.com/allisonhorst/palmerpenguins。这是您的报告的一个版本,使用 penguins
而不是 iris
。
---
title: "Knitr and analysis"
author: "VJ"
output:
pdf_document:
latex_engine: xelatex
tables: true
graphics: yes
---
# Example
```{r content, echo = FALSE, include=FALSE}
library(glmmTMB)
library(tinytex)
library(drake)
library(tidyverse)
library(pander)
library(kableExtra)
options(kableExtra.latex.load_packages = FALSE)
library(palmerpenguins)
```
```{r analysis qty, echo = FALSE}
fitFc <- glmmTMB(bill_length_mm ~ bill_depth_mm + species, penguins, family = gaussian)
fitFc1 <- as.data.frame(coef(summary(fitFc))$cond)
fitFc1$variable <- rownames(fitFc1)
rownames(fitFc1) <- NULL
m1 <- fitFc1 %>%
select(variable, everything()) %>%
select(1,2,3,5) %>%
rename("Predictors" = 1, "Coefficients" = 2, "SE" = 3, "pvalue" = 4) %>%
mutate(pvalue = format.pval(pvalue, eps = .001, digits = 1)) %>%
mutate_at(vars(-pvalue, -Predictors), ~round(., 2))
m1$pvalue <- cell_spec(m1$pvalue, bold = ifelse(m1$pvalue< 0.05, TRUE, FALSE))
kable(
m1,
format = "latex",
booktabs = T,
caption = "Summary of linear model (LMMs).",
col.names = c("Predictors", "Coefficients", "SE", "P-value"), escape = F) %>%
kable_styling(latex_options = c("hold_position")) %>%
column_spec(2:4,background = "#BBBBBB") %>%
kable_styling() %>%
add_header_above(c(" " = 1, "LMM1" = 3), bold = T) %>%
row_spec(0, bold = FALSE, italic = T)
```
与上面的@hamagust一样,我也在Rmarkdown中遇到了“LaTeX无法编译.tex”和“!未定义的控制序列”错误,但不涉及kable或kableextra。
经过一番痛苦之后,我发现问题与使用换行符“ ”在报告正文中(代码块之外)。相反,请遵循here提供的建议并使用“\linebreak”,并包含“空”字符(ALT+255)以防止降价抱怨没有“没有尽头”。
这是值得注意的,因为在代码块内的循环内,当包裹在
cat()
中时,换行符
似乎工作得很好。 ́_(ツ)_/́
所以,我把我的请求放到了GitHub上,终于解决了,感谢朱浩!
我做了什么:
options(kableExtra.latex.load_packages = FALSE)
devtools::install_github("haozhu233/kableExtra")
report = rmarkdown::render(
#envir = new.env(),
knitr_in("Reports/report.Rmd"),
output_format = "pdf_document",
output_file = "report.pdf")
请注意,如果您更新软件包,它应该可以在有或没有
envir = new.env()
的情况下工作
请参阅此处的原始答案:https://github.com/haozhu233/kableExtra/issues/501
我有一个类似的(“LaTeX 无法编译 .tex”和“!未定义的控制序列”)问题要编织成 PDF(尽管不适用于 .docx),但不涉及
kableextra
,所以,我认为它可以是分享我的案例是如何解决的好主意......
我有:
knitr::opts_chunk$set(
echo = FALSE,
message = FALSE,
collapse=FALSE,
warning = FALSE,
results='asis'
)
尝试在循环中包含一些字幕...here或here等几个地方列出的解决方案都不起作用,例如更新软件包或重新安装
TinyTeX
...
我注意到在你的情况的错误消息中有一个“忽略空格”,对于另一个问题,“|”,对我来说有“忽略空格” '...所以,我意识到它可能有一些格式和新行定义...
所以,经过一番尝试,我发现
results='asis'
造成了所有麻烦......删除它解决了。
!未定义的控制序列。 @currentHref ->表。 高度表
错误:LaTeX 无法编译 Chapter-1....tex。请参阅https://yihui.org/tinytex/r/#debugging了解调试技巧。有关详细信息,请参阅第 1 章....日志。 执行停止 如何在Rmarkdown中解决上述问题