RTVS: невозможно связать документ с data.table - PullRequest
0 голосов
/ 01 июля 2018

Я пытаюсь получить простой документ R Markdown, работающий с пакетом data.table в Visual Studio (RTVS) 2017 (15.7.4), но безрезультатно.

Вот минимально воспроизводимый файл .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 при использовании через 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, только один раз и в конкретные способы. Смотрите справку (": =").

Опять же, у этого же документа вообще нет проблем в R Studio .

Я заметил, что две оболочки по-разному называют Пандока:

R Студийный звонок:

"C: / PROGRA ~ 2 / Pandoc / pandoc" + RTS -K512m -RTS dt_error.utf8.md --to html4 - от уценки + autolink_bare_uris + ascii_identifiers + tex_math_single_backslash + умный --output dt_error.html --email-obfuscation none - самодостаточный --standalone --section-divs --template "C: \ Users \ bmore \ Documents \ R \ win-library \ 3.5 \ rmarkdown \ rmd \ ч \ 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 Call:

"C: / PROGRA ~ 2 / Pandoc / pandoc" + RTS -K512m -RTS rmd_8c885bcf5786.utf8.md --в html4 - из уценки + autolink_bare_uris + ascii_identifiers + tex_math_single_backslash + smart --output pandoc8c8870d27b22.html --email-obfuscation none - самодостаточный --standalone --section-divs --template "C: \ Users \ bmore \ Documents \ R \ win-library \ 3.5 \ rmarkdown \ rmd \ ч \ 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 , однако я не совсем уверен, что его нельзя решить без изменений в IDE.

Примечание : Приведенный выше код прекрасно работает в режиме IDE / Interactive, при попытке "связать" любой тип вывода (html, pdf, doc) возникает ошибка.

sessionInfo()

R версия 3.5.0 (2018-04-23) Платформа: x86_64-w64-mingw32 / x64 (64-разрядная версия) Работает под: Windows 10 x64 (сборка 17134)

Матричные продукты: по умолчанию

языковой стандарт: 1 LC_COLLATE = English_United States.1252 LC_CTYPE = English_United States.1252 LC_MONETARY = English_United Штаты.1252 LC_NUMERIC = C
LC_TIME = English_United States.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
bindr_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 assertthat_0.2.0 digest_0.6.15
tibble_1.4.2 bindrcpp_0.2.2 purrr_0.2.5valu_0.10.1 glue_1.2.0 labeling_0.3 stringi_1.1.7 compiler_3.5.0

1 Ответ

0 голосов
/ 03 декабря 2018

Это подтверждается как зафиксированное в data.table_1.11.8 и позже в комментарии @Hugh Ugh выше.

Однако, если кто-то по какой-то причине вынужден использовать предыдущую версию data.table с RTVS, обходной путь должен добавить:

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")

    }
    ```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...