我在 r markdown 中编写了一个函数。我想在存储在同一文件夹中的许多不同的 csv 上运行以下内容。
因此,我将如何创建一个通用函数 [代替我的整体代码中的以下代码],以便它允许导入和分析文件夹中的每个 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)))
}
你在正确的轨道上。这是将参数传递给 rmd-files 的情况,解决方法如下:
您的.Rmd
文件需要知道.csv
要加载哪个,因此我们将文件名作为参数传递:
分析.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'))
}
报告.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 标头的参数。使用 .params 访问参数params$PARAMNAME_SPECIFIED_IN_HEADER
。
yihui 的“R Markdown: The Definitive Guide”, 15.3 Knitting with parameters 中有很好的解释(已经在上面链接的线程中链接了)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句