【发布时间】:2021-09-19 12:15:21
【问题描述】:
我正在申请初级数据分析师职位,并意识到我将发送很多封求职信。
为了(在某种程度上)减轻这将带来的痛苦和痛苦,我想自动化求职信中适合自动化的部分,并将使用 R Markdown 来(希望)实现这一目标。
就这个问题而言,假设我希望自动化的部分是申请的职位,而公司希望雇用某人担任该职位,用于求职信的标题。
这些是我在脑海中设想的步骤:
- 在 Excel 电子表格中收集感兴趣的职位和相应的公司。这给出了一个 Excel 表格,其中包含两列变量,分别为 position 和 company。
- 将 Excel 文件作为数据框/tibble 读入 R Markdown(我们称之为
jobs)。 - 在 .Rmd 文件的 YAML 标头中定义两个参数,如下所示:
---
output: pdf_document
params:
position: jobs$position[i]
company: jobs$company[i]
---
求职信的标题将如下所示:
“r params$positionr params$company职位申请”
总结一下:为了不必手动更改每封求职信的参数值,我想读取一个带有职位标题和公司名称的 Excel 文件,通过 YAML 标头中的参数循环这些文件,然后让 R Markdown 为每对职位和公司输出一个 PDF(理想情况下,每个 PDF 的名称都包括职位名称和公司名称,以便在发送信件时更容易识别)。那可能吗? (注:职位名称和公司名称不一定要保存在 Excel 文件中,我就是这样收集的。)
希望以上内容清楚地说明了我想要实现的目标。
非常感谢任何朝着正确方向的推动!
编辑(2021 年 7 月 11 日):
我已经部分找到了这个问题的答案。
诀窍是定义一个包含rmarkdown::render 函数的函数。然后可以将此函数包含在嵌套的for-loop 中以生成所需的 PDF 文件。
再次,假设我想自动化 position 和 company,我将渲染函数定义如下(在与“main”.Rmd 分开的脚本中包含文本的文件[此处命名为“loop_test.Rmd”]):
render_function <- function(position, company){
rmarkdown::render(
# Name of the 'main' .Rmd file
'loop_test.Rmd',
# What should the output PDF files be called?
output_file = paste0(position, '-', company, '.pdf'),
# Define the parameters that are used in the 'main' .Rmd file
params = list(position = position, company = company),
evir = parent.frame()
)
}
然后,在for-loop 中使用该函数:
for (position in positions$position) {
for (company in positions$company) {
render_function(position, company)
}
}
其中包含相关位置的 Excel 文件称为 positions,其中有两个变量称为 position 和 company。
我分别对一个职位和一个公司使用 3 个“观察”(“公司 1”、“公司 2”和“公司 3”和“职位 1”、“职位 2”和“职位 3”)测试了这种方法)。上述方法的一个问题是它会生成 3^2 = 9 个报告。例如,职位 1 用于公司 1、公司 2 和公司 3 的字母。我显然只想匹配公司 1 和职位 1 的输出。有人知道如何实现这一点吗?这对于只有三个观察值的两个变量来说是完全没有问题的,但我的意图是使用几个额外的参数。不幸的是,在我结束搜索之前,公司的数量(即“观察”)也很可能非常多......比如说,5-6 个参数和 20 家公司,报告输出的数量显然会变成可笑。
如前所述,我已经快到了,但是对于如何将输出限制为仅“匹配”公司与职位的任何正确方向的推动,我们将不胜感激。
【问题讨论】:
标签: r r-markdown knitr