如何使用R降价创建循环

问题描述 投票:0回答:1

我是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文件...。] >

html r loops markdown read.csv
1个回答
0
投票

我以前曾遇到过这个问题,并通过创建一个包含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")

© www.soinside.com 2019 - 2024. All rights reserved.