我试图获得一个简单的R Markdown文档,该文档与Visual Studio(RTVS)2017(15.7.4)中的data.table包一起使用,无济于事。
这是最小可复制的.rmd文件(启用了一些可选的调试选项):
---
title: "Untitled"
output: html_document
---
```{r knitr-setup, include = FALSE}
library(knitr)
knitr::opts_chunk$set(eval = TRUE)
opts_knit$set(progress = FALSE, verbose = TRUE)
```
```{r test_id, message=FALSE, results="show", echo=TRUE, warning=FALSE}
require(rmarkdown)
require(data.table, quietly = TRUE, warn.conflicts = FALSE)
options(datatable.verbose = TRUE)
DT = data.table(x=1:3, y=4:6) # no
DT # yes
DT[, z := 7:9] # no
print(DT[, z := 10:12]) # yes
if (1 < 2) DT[, a := 1L] # no
DT # yes
```
Some text.
```{r}
sessionInfo()
```
我看过类似症状的类似问题,
data.table error when used through knitr, gWidgetsWWW
我已经尝试过与我在“ devtools”软件包开发中使用命名空间类似的命名空间覆盖,
https://github.com/rstudio/rmarkdown/issues/278
我认为这可能与我引用程序包(或命名空间等)有关。但是,完全相同的文件在“ R Studio”中可以完全正常运行。所以我不确定是这种情况。
我得到的错误是:
R评估失败:
rtvs :: rmarkdown_publish(blob_id = 29,output_format =“ html_document”, encoding ='cp1252')
':='(z,7:9)中的错误:检查is.data.table(DT)== TRUE。 另外,:=和':='是在j中为我们定义的,仅一次且在 特定方式。请参阅help(“:=”)。
同样,同一文档在 R Studio 中完全没有问题。
我确实注意到这两个shell对pandoc的调用略有不同:
R Studio通话:
“ C:/ PROGRA〜2 / Pandoc / pandoc” + RTS -K512m -RTS dt_error.utf8.md-至 html4 --from markdown + autolink_bare_uris + ascii_identifiers + tex_math_single_backslash + smart --output dt_error.html-电子邮件混淆无-自包含-独立--section-divs --template“ C:\ Users \ bmore \ Documents \ R \ win-library \ 3.5 \ rmarkdown \ rmd \ h \ default.html” --no-highlight --variable highlightjs = 1 --variable“ theme:bootstrap” --include-in-header“ C:\ Users \ bmore \ AppData \ Local \ Temp \ Rtmp0cb9Vo \ rmarkdown-stra0bc15f917ea.html” --mathjax --variable“ mathjax-url:https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML”
Visual Studio调用:
“ C:/ PROGRA〜2 / Pandoc / pandoc” + RTS -K512m -RTS rmd_8c885bcf5786.utf8.md -至html4-从markdown + autolink_bare_uris + ascii_identifiers + tex_math_single_backslash + smart --output pandoc8c8870d27b22.html-电子邮件混淆无-自包含-独立--section-divs --template“ C:\ Users \ bmore \ Documents \ R \ win-library \ 3.5 \ rmarkdown \ rmd \ h \ default.html” --no-highlight --variable highlightjs = 1 --variable“ theme:bootstrap” --include-in-header“ C:\ Users \ bmore \ AppData \ Local \ Temp \ Rtmp429dUm \ rmarkdown-str8c886f7837b1.html” --mathjax --variable“ mathjax-url:https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML”
我还向Visual Studio Developer community提交了一个错误报告,但是,我不完全相信如果不更改IDE就无法解决它。
注意:上面的代码可以在IDE /交互模式下正常运行,当尝试“编织”为任何输出类型(html,pdf,doc)时,会发生错误。 / em>
sessionInfo()
R版本3.5.0(2018-04-23)平台:x86_64-w64-mingw32 / x64(64位) 运行于:Windows 10 x64(内部版本17134)
Matrix产品:默认
语言环境:1 LC_COLLATE = English_United States.1252 LC_CTYPE = English_United States.1252 LC_MONETARY = English_United 状态1252 LC_NUMERIC = C
LC_TIME =英语_美国。1252附加的基本软件包:1统计信息图形grDevices utils
数据集方法基础其他附加软件包:1 rmarkdown_1.10 knitr_1.20
ggplot2_2.2.1 dplyr_0.7.6 data.table_1.11.4通过名称空间(未附加)加载:1 Rcpp_0.12.17
绑定器_0.1.1 magrittr_1.5 rtvs_1.0.0.0 tidyselect_0.2.4 munsell_0.5.0 colorspace_1.3-2 R6_2.2.2 rlang_0.2.1
stringr_1.3.1 plyr_1.8.4 tools_3.5.0 grid_3.5.0
gtable_0.2.0 [15] htmltools_0.3.6 yaml_2.1.19
rprojroot_1.3-2 lazyeval_0.2.1断言_0.2.0摘要_0.6.15
tibble_1.4.2 bindrcpp_0.2.2 purrr_0.2.5评估_0.10.1 胶水_1.2.0 labeling_0.3字符串i_1.1.7编译器_3.5.0
答案 0 :(得分:0)
此问题已在data.table_1.11.8
中得到确认,随后根据@Hugh Ugh的上述评论进行了确认。
但是,如果由于某种原因,任何人由于某种原因而不得不使用data.table的早期版本,则解决方法是添加:
assignInNamespace("cedta.pkgEvalsUserCode", c(data.table:::cedta.pkgEvalsUserCode, "rtvs"), "data.table")
在脚本块中,如下所示:
```{r additional-libraries, echo=FALSE}
library(data.table, quietly = TRUE, warn.conflicts = FALSE)
assignInNamespace("cedta.pkgEvalsUserCode", c(data.table:::cedta.pkgEvalsUserCode, "rtvs"), "data.table")
}
```