我试图在Visual (RTVS) 2017 (15.7.4)中使用data.table包获得一个简单的R标记文档,但没有效果。
下面是一个最小可重复的.rmd文件(打开了一些可选的调试选项):
---
title: "Untitled"
output: html_document
---
```{r knitr-setup, include = FALSE}图书馆(针织品)
knitr::opts_chunk$set(eval = TRUE)
Opts_knit$set(进度=假,详细=真)
```{r test_id, message=FALSE, results="show", echo=TRUE, warning=FALSE}要求(减价)
要求(data.table,静音=真,warn.conflicts =假)
选项(datatable.verbose= TRUE)
DT = data.table(x=1:3,y=4:6) # no
DT #是
DT,z := 7:9 # no
打印(DT,z := 10:12) # yes
如果(1 < 2) DT,则为:= 1L # no
DT #是
Some text.
```{r}sessionInfo()
我曾看过类似的问题,这些问题都有同样的症状:
通过针织品使用data.table错误,gWidgetsWWW
我尝试过类似于我如何使用名称空间覆盖"devtools“包开发,似乎并不重要。
https://github.com/rstudio/rmarkdown/issues/278
正如我所想的那样,我如何引用包(或名称空间等)可能是个问题。但是,完全相同的文件在“runs”中运行完全正常。所以我不确定情况是否如此。
我得到的错误是:
R评价失败:
rtvs::rmarkdown_publish(blob_id = 29,output_format = "html_document",编码= 'cp1252') “:=”(z,7:9)中的错误:检查is.data.table(DT) == TRUE。其他的,:=和':=‘是为我们定义的j,只有一次,并以特定的方式。参见帮助(“:=”)。
同样,这个文档在R中完全没有问题。
我确实注意到这两个shell调用pandoc略有不同:
R Studio调用:
"C:/PROGRA~2/Pandoc/pandoc“+RTS -K512m -RTS dt_error.utf8.md --从"C:\Users\bmore\Documents\R\win-library\3.5\rmarkdown\rmd\h\default.html”--输出dt_error.html -电子邮件--无混淆-自包含-独立-divs--模板“C:\Users\bmore\Documents\R\win-library\3.5\rmarkdown\rmd\h\default.html”-无亮点-变量-变量-“主题:引导“--包含在头中的"C:\Users\bmore\AppData\Local\Temp\Rtmp0cb9Vo\rmarkdown-stra0bc15f917ea.html”--mathjax -变量"mathjax-url:HTMLorMML“
调用:
"C:/PROGRA~2/Pandoc/pandoc“+RTS -K512m -RTS rmd_8c885bcf5786.utf8.md --从"C:\Users\bmore\Documents\R\win-library\3.5\rmarkdown\rmd\h\default.html”到html4 --输出panoc8c8870d27b22.html--包括标头"C:\Users\bmore\AppData\Local\Temp\Rtmp429dUm\rmarkdown-str8c886f7837b1.html“--mathjax --变量"mathjax-url:HTMLorMML”
我还向Visual Studio Developer社区提交了一份bug报告,但是,我并不完全相信,如果不对IDE进行更改,就无法解决这个问题。
备注:上面的代码运行在IDE/Interactive模式下,当试图以任何输出类型(html、pdf、doc)的形式“编织”时,就会发生错误。
sessionInfo()R版本3.5.0 (2018-04-23)平台:x86_64-W64-mingw32 32/ x64 (64位),运行于: Windows 10 x64 (build 17134) 矩阵产品:默认 地区:1 LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 LC_NUMERIC=C LC_TIME=English_United状态1252附加的基本包:1 stats图形grDevices实用程序 数据集方法基于其他附加包: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 bindr_0.1.1 magrittr_1.5 rtvs_1.0.0.0 tidyselect_0.2.4 munsell_0.5.0色空间_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 assertthat_0.2.0 digest_0.6.15 tibble_1.4.2 bindrcpp_0.2.2 purrr_0.2.5 evaluate_0.10.1 glue_1.2.0 labeling_0.3 stringi_1.1.7 compiler_3.5.0
发布于 2018-12-03 02:17:40
这一点在data.table_1.11.8和后面的@Hugh的评论中都得到了确认。
但是,如果由于某些原因而限制任何人使用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")}```https://stackoverflow.com/questions/51122990
复制相似问题