r - 将特定文件名分配给 rmarkdown 中的不同输出文件集
问题描述
我正在创建一组 PDF,每个都包含不同的信息。我想根据将接收信息的人来命名文件。我正在使用for
循环来运行它:
for (i in 1:nrow(files)){
rmarkdown::render(input = "files_script.Rmd",
output_format = "pdf_document",
output_file = paste("Information_", i, ".pdf", sep=''),
output_dir = "directoryname/")
}
该脚本工作得很好,但输出文件在我的目录中只是编号。我想根据我的数据框列中的名称来命名它们。
我的数据如下所示:
Feedback Name Surname
xyz John Smith
abc Karen Jones
我想按姓氏命名文件。
解决方案
所以你的名字在 data.frame 的两列中(我在这里称之为 df )。您可以for
像这样使用循环:
for (name in paste0(df$Name, "_", df$Surname)) {
rmarkdown::render(input = "files_script.Rmd",
output_format = "pdf_document",
output_file = paste0("Information_", name, ".pdf"),
output_dir = "directoryname/")
}
我替换paste(sep = "")
为,paste0()
因为它正在做同样的事情。
不知道为什么你会那样做。files_script.Rmd 始终是同一个文件。所以渲染一次然后更改名称会更快。
更新
既然您说要保留i
as for 循环变量,那么您可以这样做:
names <- paste0(df$Name, "_", df$Surname)
for (i in seq_along(names)) {
rmarkdown::render(input = "files_script.Rmd",
output_format = "pdf_document",
output_file = paste0("Information_", names[i], ".pdf"),
output_dir = "directoryname/")
}
seq_along
在这种情况下是一种更安全的方法1:length(names)
(见this)
推荐阅读
- python - Python def vowelCount() 计算元音的数量
- html - 如何使用媒体查询删除我的网站元素
- jquery - 如何从 Jquery FormData 序列化(不使用 AJAX)执行 NodeJS POST 请求?
- python - 打印整个列表而不是索引编号的元素,其他时候正确打印列表中的一个元素 - 代码完全相同
- google-cloud-platform - 带有列表抛出错误的 Terraform 多级地图
- flutter - FutureProvider 使用 .whenData() 速记
- javascript - 我在电子商务网站上工作,但在调试时遇到问题
- python - Pandas 版本之间的不同行为
- python - 在使用平衡数据集训练 LGBM 时会出现以下错误
- swiftui - ScrollViewReader 锚中心创建空闲空间