对于我想稍后手动输入的给定路径,我希望R生成与该目录中的.csv
文件一样多的报告。
---
output: html_document
params:
directory:
value: x
---
```{r, echo = F}
csvs <- list.files(params$directory, pattern = "\\.csv$")
done <- list.files(params$directory, pattern = "analysis_")
name_csv <- substr(csvs, 1, nchar(csvs)-4) # .csv
name_done <- substr(done, 19, nchar(done)-5) # .html
selected_csv <- csvs[min(which(!(name_csv %in% name_done )))]
.
.
.
```
我尝试做的是选择哪个csv
尚未通过匹配进行分析,如果它们具有相同的文字。 .csv
具有唯一的名称,因此如果我有unique1.csv
和analysis_unique1.html
,则代码会跳过并转到unique2.csv
。
这第一部分已经使我的代码失败了。我明白了:
对象[seq_len(ile)]出错: 对象类型&#39;符号&#39;不是子集表格
当我尝试从&#34;外部&#34;访问某些内容时,我试图删除这部分代码并遇到同样的问题。例如,我的代码在尝试加载包时也会中断。甚至以后,当我尝试做read.csv
时(我手动编写了csv名称)。
```{r, echo = F}
data <- read.csv(selected_csv)
```
虽然即使是基本的rmarkdown::render("file.Rmd")
也无法正常工作,但我尝试做的完整渲染是:
for(i in 1:length(list.files(pattern = "\\.csv$"))){
rmarkdown::render(
input="file.Rmd",
output_file= paste('analysis_', substr(
list.files(pattern = "\\.csv$")[i], 1, nchar(selected_csv)-4), sep = ' '),
params = "ask")
}
虽然我不确定nchar(selected_csv)
部分是否可行,因为它引用Rmdfile
。
无论如何,这是我做这件事的蹩脚尝试。
答案 0 :(得分:0)
并不完全清楚你想要实现的目标。
下面的代码片段将列出每个csv文件,检查html文件是否存在,如果不存在,则渲染html文件
lapply(list.files(pattern = "\\.csv$"), function(x) {
outhtml <- paste0("analysis_",basename(x),".html")
if (!file.exists(outhtml)) {
rmarkdown::render("file.Rmd", "html_document", outhtml)
}
})
HTH