8R减价

8.1元数据输出

我们通常认为R Markdown文档产生一个单一的输出工件,例如HTML或PDF文件。的rmarkdown包允许报告作者从报告中发出额外的输出元数据。英格兰vs伊朗让球RStudio Connect利用了这个元数据,允许输出文件、自定义电子邮件主题和额外的电子邮件附件。

有两种设置输出元数据的方法:在YAML报头和在R代码块中。

YAML头是为您总是希望发出的元数据配置默认值的好地方。对象下的所有输出元数据rmd_output_metadata章节:

---标题:“报告标题”rmd_output_metadata:rsc_email_subject:季度部门指标---

您还可以使用R代码来设置输出元数据。如果您希望元数据根据代码中的条件或变量而变化,这将非常有用。

changePercent < -20.主题< -粘贴“销售变更”changePercent,“%”9月="") rmarkdown::output_metadatarsc_email_subject =主题)

R代码还可以读取输出元数据的当前状态。这可以帮助您在报表运行时逐步更改此信息。

主题< -rmarkdown::output_metadata得到“rsc_email_subject”如果(changePercent>10){主题<-粘贴(主题,“超过目标!”) rmarkdown::output_metadatarsc_email_subject =主题)}

rmd_output_metadata的名字开始rsc_保留在RStudio Connect中使用。英格兰vs伊朗让球

8.2输出文件

8.2.1输出文件简介

输出文件是与呈现的报表一起存在的文件。它们可以是图、数据文件,或者从报告中的R代码生成的其他工件。输出文件将通过HTTP可用,并且它们将以与您的报告相同的方式进行版本控制。输出文件也受到与报告相同的访问控制。

Connect将不处理存在于正在呈现的报表的工作目录之外的任何输出文件。这意味着你不能使用绝对路径(例如,/root/file.csv)或相对路径(例如,. . / file.csv).

8.2.2如何处理输出文件

有两种方法可以指定将哪些文件作为输出文件处理。第一个是列出R Markdown YAML头文件中的文件名rmd_output_metadata下节rsc_output_files,如下所示:

---标题:“报告标题”rmd_output_metadata:rsc_output_files:-“data.csv”---

rsc_output_files获取报告呈现后应可用的文件名称列表。如果在呈现报告后列出了一个不存在的文件,Connect将记录一条消息,但会继续尝试处理列出的其他文件。如果在呈现报表期间没有生成输出文件,那么在将报表上传到Connect时还需要将它们作为资源文件列出。有关资源文件的更多信息,请参见第一部分8.3

还可以从R code中指定输出文件的列表。例如:

rmarkdown::output_metadatarsc_output_files =列表“data1.csv”“data2.csv”))

对于嵌套文件,输出目录将维护您提供的文件夹结构。要添加包含相对路径的嵌套文件:

rmarkdown::output_metadatarsc_output_files =列表“data1.csv””。/ moreData / data2.csv””。/ moreData EvenMoreData / data3.csv”

要包含一个目录:

rmarkdown::output_metadatarsc_output_files =list.files”。/ myDirectory”递归=真正的full.names =真正的))

您还可以使用R Markdown中支持的标准Markdown链接来创建一个共享报告输出文件的链接。卡塔尔世界杯欧洲预选赛赛程表例如,如果您想共享一个名为data.csv,你可以在报告中像这样链接它:

以下是我在报告中使用的数据:[data.csv] (data.csv)

因为输出文件的版本是随报表的呈现而变化的,所以它们还可以从历史视图中获益。在上面的例子中,如果您查看报告的历史呈现,当您单击data.csv链接,您将从报告的同一时间点下载该文件。

8.2.3通过HTTP访问输出文件

内容部署到http://connect.mycompany.com/content/42/将在该URL路径下有其输出文件可用。一个名为daily-summary.csv可以在URL中找到吗http://connect.mycompany.com/content/42/daily-summary.csv

您的内容的URL与它的“Open Solo”位置相同,可以在RStudio Connect仪表板中获得。英格兰vs伊朗让球

8.3资源文件

如果您希望RStudio英格兰vs伊朗让球 Connect托管计算机上报表源目录中的一个文件,并且在呈现该文件时该文件不是由报表生成的,那么您需要将该文件标记为资源文件。与输出文件一样,资源文件可以是一个图表、一个数据文件或任何其他作为文件存在的工件。你可以使用RStudio IDE英格兰vs伊朗让球来选择资源文件,或者你可以在R Markdown头文件中列出它们:

---标题:“报告标题”rmd_output_metadata:rsc_output_files:-“data.csv”resource_files:-“data.csv”---

不像rsc_output_files,resource_files键没有嵌套在下面rmd_output_metadata.如果您没有将资源文件列在resource_files,那么你就需要在从IDE部署时使用“add More…”按钮手动添加它们。参见3.有关发布其他资源文件的详细信息。

8.4电子邮件定制

8.4.1邮件主题

您可以自定义生成报表的电子邮件时使用的主题行。英格兰vs伊朗让球RStudio Connect使用名为rsc_email_subject电子邮件主题。一份没有rsc_email_subject条目使用其发布的文档名称。

使用YAML头来指定电子邮件主题的一个简单的静态文本覆盖:

---标题:“报告标题”rmd_output_metadata:rsc_email_subject:“我的邮件主题转到这里”---

如果你需要动态构建邮件主题,在R代码块中设置邮件主题:

changePercent < -20.主题< -粘贴“销售变更”changePercent,“%”9月="") rmarkdown::output_metadatarsc_email_subject =主题)

RSC_EMAIL_SUBJECT环境变量包含已发布报告的名称,该名称也充当默认的电子邮件主题。如果您希望添加但不完全替换主题,则此环境变量非常有用。

的价值RSC_EMAIL_SUBJECT在呈现报告时计算。对报告名称的更改将合并到后续的渲染中。

changePercent < -20.defaultSubject < -Sys.getenv“RSC_EMAIL_SUBJECT”)课题< -sprintf"%s已被%d%%", defaultSubject, changePercent::output_metadatarsc_email_subject =主题)

还可以从输出元数据中读取当前主题,以增量方式组成最终主题。

changePercent < -20.主题< -rmarkdown::output_metadata得到“rsc_email_subject”)课题< -sprintf"%s已被%d%%", subject, changePercent::output_metadatarsc_email_subject =主题)

8.4.2邮件正文

报表可以自定义为该报表发送电子邮件时使用的消息体。英格兰vs伊朗让球RStudio Connect使用名为rsc_email_body_text对于纯文本体和rsc_email_body_html对HTML的身体。没有任何条目的报表使用自动生成的纯文本主体,并带有到报表URL的链接。

8.4.2.1短信的身体

使用YAML头来指定一个简单的静态文本覆盖邮件正文:

---标题:“报告标题”rmd_output_metadata:rsc_email_body_text:“这是我的自定义邮件信息。YAML需要像上面这样的全空行来开始新的行。”---

邮件客户端的消息看起来类似如下:

这是我的自定义电子邮件信息。YAML需要像上面那样的全空行来开始新行。

如果你需要动态构建消息,在R代码块中设置主体文本:

changePercent < -20.身体< -粘贴“销售变更”changePercent,“%”。9月="") rmarkdown::output_metadatarsc_email_body_text =身体)

您还可以从输出元数据中读取当前主体,以增量地组成最终主体。

widgetOrders < -42身体< -rmarkdown::output_metadata得到“rsc_email_body_text”)身体< -sprintf“% s\ n \ n有%d个部件销售。”, body, widgetOrders) rmarkdown::output_metadatarsc_email_body_text =身体)

胶水包可以帮助进行更复杂的格式化。

图书馆(胶水)widgetOrders < -42changePercent < -20.身体< -胶水“销售额变化为{changePercent}%。”\ n \ n“有{widgetOrders}小部件的销售。”) rmarkdown::output_metadatarsc_email_body_text =身体)

8.4.2.2HTML消息体

rsc_email_body_html属性指定html格式的消息体。英格兰vs伊朗让球RStudio Connect设置消息的内容类型,以便大多数电子邮件客户端能够正确地显示HTML消息。

使用rsc_email_body_text在一起rsc_email_body_html提供旧的电子邮件客户端可以显示的文本,同时允许新客户端显示您的丰富内容。

YAML头可以指定一个简单的静态HTML覆盖邮件正文:

---标题:“报告标题”rmd_output_metadata:rsc_email_body_html:“新报告准备好了!”< / >强”---

你可以动态构建HTML消息:

图书馆(htmltools changePercent < -)20.身体< -粘贴h1“销售更新”),p“销售变更”新兴市场paste0(changePercent“%”))),9月=\ n) rmarkdown::output_metadatarsc_email_body_html =身体)

编写和样式化HTML电子邮件消息与构建传统网页不同。电子邮件消息不能嵌入脚本或引用外部样式表。电子邮件客户端可能实现额外的限制。

并不是所有的电子邮件客户端显示HTML消息都完全相同。给自己发送一条测试消息,检查基本格式,然后与听众确认消息在他们的电子邮件客户端中显示正确。

8.4.2.3在HTML电子邮件中嵌入图像

控件可以在HTML电子邮件中嵌入图像,例如图形rsc_email_images属性rmd_output_metadata.嵌入的图像必须有一个Content ID,该ID在HTML主体中使用,并在向其提供图像时使用rsc_email_images,并且图像本身必须是base64编码的。下面是一个例子:

图书馆(ggplot2)图书馆(htmltools)#创建一个情节。car_plot < -ggplotdata =mtcars,aesx =disp,y =惠普,颜色=wt,大小=英里/加仑)+geom_point()#将图片以PNG格式保存到磁盘。ggplot2::ggsave“plot.png”情节=car_plot,设备=“png”宽度=5身高=5dpi =“屏幕”#将PNG图像编码为base64。plot_base64 < -base64enc::base64encode“plot.png”#构建HTML电子邮件信息。消息< -粘贴h1“mtcars数据阴谋”),#使用文件名"plot.png"作为内容ID,使用"cid:"#在图像标签的“src”属性:pimgsrc =“cid: plot.png”)),9月=\ n#创建数据结构来保存嵌入的图像。图片< -列表plot.png =plot_base64)连接HTML邮英格兰vs伊朗让球件的消息和图像数据。rmarkdown::output_metadatarsc_email_body_html =消息)rmarkdown::output_metadatarsc_email_images =图像)

R Markdown电子邮件表"><br></p>
            <blockquote>
             <p>R Markdown本身目前不生成电子邮件友好的HTML输出,这就是为什么RStudio Connect不能使用生成的报告作为电子邮件主体。英格兰vs伊朗让球</p>
            </blockquote>
            <p>使用图像构建正确的、电子邮件友好的HTML消息可能很复杂,但是R包<a href=囊胚的方法可以简化此过程。

8.4.2.4使用Blastula简化HTML邮件创建

囊胚它可以在不同的客户端上正确呈现你的消息样式,并且它可以处理HTML结构和嵌入图像的许多细节。

使用囊胚版本0.2.1或更新。

# Blastula示例改编自https://github.com/rich-iannone/blastula图书馆(囊胚)图书馆(formattable)#创建数据帧。df < -data.frameName =c“Bob”“阿什利”“詹姆斯”“大卫”“珍妮”“汉斯”“狮子座”“约翰。”“艾米丽”“李”),整体=c“C”“一个”“一个”“C”“B”“B”“B”“一个”“C”“C”),Q1_Sales =c8.99.59.68.99.19.39.39.98.58.6),Q2_Sales =c9.19.19.29.18.98.59.29.39.18.8),投影=c99.39.4998.99.259.68.88.7),跟踪=c真正的真正的真正的真正的真正的),stringsAsFactors =#使用' format_table() '创建一个HTML表。formatted_table < -format_tablex =df,列表整体=格式化程序“跨越”风格=xifelse(x= =“一个”风格颜色=“绿色”字体。重量=“大胆”),NA)),区域坳=c(Q1_Sales Q2_Sales))normalize_bar“粉红色”0.2),投影=格式化程序“跨越”风格=x风格颜色=ifelse排名-x)< =3.“绿色”“灰色”x)),sprintf“%。2f (rank: %02d)", x,排名-x)))跟踪=格式化程序“跨越”风格=x风格颜色=ifelse(x,“绿色”“红色”x)),icontextifelse(x,“ok”“删除”),ifelse(x,“是的”“不”)) ) ) )#创建Blastula邮件对象。消息< -compose_email身体=嗨,吉姆,本财季将于下周结束。这是\ \销售代表号码。\ \{formatted_table}< br / >干杯,
销售副总裁"
#在RStudio Connect中使用Blastula的消息作为邮件主体。英格兰vs伊朗让球rmarkdown::output_metadatarsc_email_body_html =消息html_str) rmarkdown::output_metadatarsc_email_images =消息图像)

输出将被格式化为电子邮件客户端:

R Markdown电子邮件表"><br></p>
            <p>你也可以在你的HTML邮件中嵌入图片和图表。</p>
            <pre class=图书馆(囊胚)图书馆(ggplot2)#创建一个ggplot plot对象。car_plot < -ggplotdata =mtcars,aesx =disp,y =惠普,颜色=wt,大小=英里/加仑)+geom_point()#在邮件正文中使用' add_ggplot() '辅助函数。电子邮件< -compose_email身体=新数据可用!这张图总结了新数据:{add_ggplot(plot_object = car_plot, width = 5, height = 5)}干杯#给RStudio Connect HTML邮件数据。英格兰vs伊朗让球rmarkdown::output_metadatarsc_email_body_html =电子邮件html_str) rmarkdown::output_metadatarsc_email_images =电子邮件图像)

R Markdown电子邮件表"><br></p>
            <p>为了保持一致性,您可以始终指定两者<code>rsc_email_body_html</code>和<code>rsc_email_images</code>在使用Blastula时,在R Markdown报告的末尾,即使最初它不包含嵌入的图像:</p>
            <pre class=电子邮件< -囊胚::compose_email(…)rmarkdown::output_metadatarsc_email_body_html =电子邮件html_str) rmarkdown::output_metadatarsc_email_images =电子邮件图像)

看到囊胚网站在https://github.com/rich-iannone/blastula了解更多信息和示例。

8.4.3包括url和其他细节

您可能希望使用RStudio Connect中报告位置的链接来定制您的电子邮件,或者为电子邮件收件人提供一种管理其电子邮件订阅的方法。英格兰vs伊朗让球英格兰vs伊朗让球RStudio Connect提供R Markdown渲染,其中包含可以从代码引用的环境变量。

变量名 示例值
RSC_REPORT_NAME “季度销售总结”
RSC_REPORT_RENDERING_URL “http://example.com/content/42/_rev1/”
RSC_REPORT_SUBSCRIPTION_URL “http://example.com/connect/ /应用程序/ 42 /订阅”
RSC_REPORT_URL “http://example.com/content/42/”

的价值RSC_REPORT_NAME在呈现报告时计算。对报告名称的更改将合并到后续的渲染中。

在呈现之前,URL环境变量的最终值是未知的。英格兰vs伊朗让球RStudio Connect使用这些环境变量的占位符值呈现文档。在构造最后的电子邮件消息时替换占位符值。这些url不适合在报告主体中使用。

使用Sys.getenv ()函数获取报告中这些环境变量的值。在RStudio Connect之外呈现报表时,这些环境变量将没有值。英格兰vs伊朗让球使用第二个参数Sys.getenv ()提供一个临时值。

在本地渲染时使用示例URL(不是在RStudio Connect中)。英格兰vs伊朗让球rendering_url < -Sys.getenv“RSC_REPORT_RENDERING_URL”“http://example.com/content/42/_rev123/”

你可以在邮件正文或页脚的任何地方使用这些变量。下面的示例使用这些变量构建文本或HTML消息页脚。

图书馆(胶水)report_name < -Sys.getenv“RSC_REPORT_NAME”) report_url < -Sys.getenv“RSC_REPORT_URL”) rendering_url < -Sys.getenv“RSC_REPORT_RENDERING_URL”“http://example.com/content/42/_rev123/”) subscription_url < -Sys.getenv“RSC_REPORT_SUBSCRIPTION_URL”) widget_orders < -42change_percent < -20.身体< -胶水粘贴“销售额变化了{change_percent}%。”\ n“有{widget_orders}小部件销售。\ n“——”'此{report_name}文档可在{rendering_url}中使用'“最新发布的版本总是在{report_url}中可用”“要停止接收这些邮件,请在这里取消订阅:{subscription_url}”9月=\ n) rmarkdown::output_metadatarsc_email_body_text =身体)

8.4.5抑制预定邮件

计划报表可以配置为在生成输出后自动发送电子邮件。报告的作者可以通过给出rsc_email_suppress_scheduled元数据属性是逻辑(布尔)值。

使用YAML头来设置一个默认值rsc_email_suppress_scheduled.如果设置为真正的并且不被下游代码更改,报告将永远不允许在计划执行后发送电子邮件。任何试图在RStudio Connect仪表板中配置更新后电子邮件的尝试都不会产生任何效果。英格兰vs伊朗让球

---标题:“报告标题”rmd_output_metadata:rsc_email_suppress_scheduled:真正的---

您可以根据报告中可用的数据动态地做出此决定。本示例假设电子邮件在默认情况下是被抑制的(如上面的YAML所示),但在超过某些业务条件时被触发。

changePercent < -compute_weekly_sales_change()如果(changePercent<5||changePercent>5) {#邮件实质性销售变化。rmarkdown::output_metadatarsc_email_suppress_scheduled =)}

8.4.6禁止将报告附加到电子邮件

默认情况下,Connect将生成的文档作为附件添加到该报告的电子邮件消息中。你可以通过给你的R Markdown报告防止这个附件rsc_email_suppress_report_attachment元数据属性是逻辑(布尔)值。

使用YAML头来设置一个默认值rsc_email_suppress_report_attachment.一个真正的后续未调整的值表示生成的内容永远不会附加到电子邮件中。

---标题:“报告标题”rmd_output_metadata:rsc_email_suppress_report_attachment:真正的---

您还可以在R代码中做出“附加或不附加”的决定。

rmarkdown::output_metadatarsc_email_suppress_report_attachment =真正的

配置的附件rsc_email_attachments元数据属性(8.4.4)仍然附有,且不受rsc_email_suppress_report_attachment设置。

8.5跟踪访问

Connect还公开了关于R Markdown文档的访问信息,这将告诉您哪些文档已经被查看过,何时被谁查看过。同样的信息被记录下来,并可用于参数化的R Markdown文档、其他呈现的类型和静态内容。它可以通过管理员或发布者使用的API获得。出版商只能检索有关他们自己内容的信息。

关于使用API的更多信息,请参见RStudio Connect管理指南的历史信息章节。英格兰vs伊朗让球