我是R的新手,但是我的目标是要拥有一个Markdown文件,该文件可以接收位于不同目录中的.csv文件,然后每个.csv都会在Markdown中循环,以创建单独的HTML文件。因此,我需要回答的主要问题是:您可以在markdown文件中创建一个循环,该循环遍历从.csv文件创建的各个数据帧,并为每个数据帧创建HTML输出,而无需手动输入吗?
[基本上,我们有温度记录器,可以记录数据并创建.csv文件。这些.csv文件存储在多个目录中,具体取决于它们来自哪个测试站点。例如
C:\ mydocuments \ data \有一长串\ 102C:\ mydocuments \ data \还有另一个长列表\ 103
依此类推。我已经创建了一个R包来过滤这些目录,因此在markdown中,我们写类似[]
source("import function.R") site="102"
并且它将知道循环浏览并从正确的目录下载102个站点数据文件。然后从那里开始,我只是手动为每个站点运行降价促销。例如,
site="102"
运行减价
site=103
运行减价
如果有帮助,导入功能看起来像这样(定义了10个站点,而不仅仅是示例中的一个)
importdata = function(site){ if (site == '102') { setwd("C:\mydocuments\data\there is a long list\102") file <- list.files(path="C:\mydocuments\data\there is a long list\102",pattern = "\\.csv$",full.names=T) if(length(file) != 0) { data = data.frame() i = 1 for (f in file) { #assign(paste0("file",i),read.csv(f, sep = ",", quote = "\"", dec = ".", colClasses=g, stringsAsFactors = FALSE)) assign(paste0("file",i),read.csv(f, sep = ",", quote = "\"", dec = ".", stringsAsFactors = FALSE)) data = rbind(data,get(paste0("file",i))) #remove(paste0("file",i)) i = 1+i } }
我想知道的是,您是否可以在markdown中创建一个循环,使代码仍从import函数中拉出,并循环循环直到所有已定义的站点结束,同时为每个站点创建单独的HTML文件。
很抱歉,冗长的解释,非常感谢!
我是R的新手,但我的目标是要拥有一个Markdown文件,该文件可以接收位于不同目录中的.csv文件,然后每个.csv都会在Markdown中循环,从而创建单独的HTML文件...。] >
我以前曾遇到过这个问题,并通过创建一个包含rmarkdown::render
的“运行脚本”来解决它(请参见上面的@stefan的评论):
#!/usr/bin/env Rscript
library(rmarkdown)
rmarkdown::render("dir/ML_Pipeline_v10.3_Sample_01.Rmd")
rmarkdown::render("dir2/ML_Pipeline_v10.3_Sample_02.Rmd")
rmarkdown::render("diff/dir/ML_Pipeline_v10.3_Sample_03.Rmd")
rmarkdown::render("etc/ML_Pipeline_v10.3_Sample_xx.Rmd")