1

我正在尝试对文件进行一些data.table操作Rmd。该文件与knit. 但是,当我运行它时easyHtmlReport,它不起作用:我的 data.tableby表达式失败并出现“错误:找不到对象 'userId'”,userId我在j表达式中使用的数据表中的列之一在哪里。破碎的表达是:

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

正如我所说,它在平原上工作得很好,knit但在easyHtmlReport.

4

2 回答 2

3

@Ramnath 是正确的。EasyHTMLReport.R 的第 40 行是:

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功能进行此更改。

于 2014-07-08T13:48:48.993 回答
3

我想发布我最终使用的替代解决方案。它利用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"))
于 2014-07-09T14:01:58.617 回答