Выражение столбца в data.table разрывается в easyHtmlReport, работает в простом knitr

Я пытаюсь сделать некоторые data.table манипуляции в Rmd файл. Файл прекрасно работает с knit, Тем не менее, когда я запускаю его через easyHtmlReport, это не работает: мой data.table by выражения терпят неудачу с 'Ошибка: объект' ИД пользователя 'не найден', где userId является одним из столбцов в моей таблице данных, которую я использую в j выражение. Нерабочее выражение:

expt.daystat = expt.users[,list(count=length(userId)),
                          keyby=list(day, status)]

Как я уже сказал, он отлично работает в простой knit но врывается easyHtmlReport,

2 ответа

Решение

@Ramnath это правильно. Строка 40 EasyHTMLReport.R - это:

knit(input=f,output=md.file)

Обновите эту строку:

knit(input = f, output = md.file, envir = envir)

Обновите сигнатуру функции из:

easyHtmlReport <-
    function(rmd.file,from,to,subject,headers=list(),control=list(),
        markdown.options=c("hard_wrap","use_xhtml","smartypants"),
        stylesheet="", echo.disable=TRUE, is.debug=F){

чтобы:

easyHtmlReport <-
    function(rmd.file,from,to,subject,headers=list(),control=list(),
        markdown.options=c("hard_wrap","use_xhtml","smartypants"),
        stylesheet="", echo.disable=TRUE, is.debug=FALSE, envir = parent.frame()){

Если вы не хотите перестраивать пакет, вы можете внести это изменение, используя edit функция.

Я хотел опубликовать свое альтернативное решение, которое я использовал. Он использует mailR что позволяет нескольким получателям и позволяет легко реализовать html, не беспокоясь о командах mime_part.

library(mailR)
library(markdown)
library(knitr)

from     <-  "me@me.com"
to       <-  "me@me.com"
subject  <-  "Test"
message  <-  markdownToHTML(knit("Test.Rmd"))
send.mail(from,to,subject,message,html=TRUE,smtp=list( host.name="smtp.test.com"))
Другие вопросы по тегам