存储在同一文件夹中的多个 csvs 的降价功能

Markdown function for multiple csvs stored in same folder

我在 r markdown 中写了一个函数。我想 运行 下面的一些不同的 csvs 存储在同一个文件夹中。

因此,我将如何着手创建一个通用函数 [代替我的整体代码中的以下代码],以便它允许导入和分析文件夹中的每个 csvs?

dat <- read.csv("importsinglecsv.csv",
                    header = TRUE,
                    sep=',')

整体代码概述如下:

Single Test
    dat <- read.csv("importsinglecsv.csv",
                    header = TRUE,
                    sep=',')
    
    datA <- subset(dat, Version == "A")
    datB <- subset(dat, Version == "B")
    olsA <- lm(measure ~ mark, data = datA)
    olsB <- lm(measure ~ mark, data = datB)
    coeffs <- rbind(olsA$coefficients, olsB$coefficients)
    r.Squared <- rbind(summary(olsA)$r.squared, summary(olsB)$r.squared)
    corA <-cor(datA$measure, datA$mark)
    corB <- cor(datB$measure, datB$mark)
    ```

我试图开发一个链接到 markdown 文件的 for 循环,但是做错了......

for (i in length(df)) {
  dat <- df[[i]]
  datA <- subset(dat, Version == "A")
  datB <- subset(dat, Version == "B")
  rmarkdown::render('"filepath"/tes.rmd',
                    output_file=paste0("filepath", df[i], ".html"),
                    params=list(new_title=paste("Exploratory analysis -", i)))
}

你走在正确的轨道上。这是 passing parameters to rmd-files as solved here:

的情况

您的 .Rmd 文件需要知道要加载哪个 .csv,因此我们将文件名作为参数传递:

analyse.r

your_path <- 'your/path/goes/here'

for (filename in list.files(path=your_path, pattern='*.csv',  full.names=FALSE)) {
  rmarkdown::render(
    './report.Rmd',
    params=list(filename=paste0(your_path, '/', filename)),
    output_file=paste0(your_path, '/', filename, '.html'))
}

report.Rmd:

---
title: "report"
output: html_document
params:
  filename: False
---

```{r setup}
dat <- read.csv(filename, header = TRUE, sep=',')
    
datA <- subset(dat, Version == "A")
datB <- subset(dat, Version == "B")
olsA <- lm(measure ~ mark, data = datA)
olsB <- lm(measure ~ mark, data = datB)
coeffs <- rbind(olsA$coefficients, olsB$coefficients)
r.Squared <- rbind(summary(olsA)$r.squared, summary(olsB)$r.squared)
corA <-cor(datA$measure, datA$mark)
corB <- cor(datB$measure, datB$mark)
```

Your RMarkdown goes here.

解释:

analyse.R 遍历所有以 *.csv 结尾的文件。 `rmardown.render(..., params=list(filename=filename)) 然后将文件名传递给它呈现的文件。

您的 .Rmd 文件已准备好接受 YAML-header 的参数。使用 params$PARAMNAME_SPECIFIED_IN_HEADER.

访问参数

yihui's "R Markdown: The Definitive Guide", 15.3 Knitting with parameters 中有很好的解释(已在上面链接的线程中链接)。