将CSV文件的系列读取为R,运行功能,将输出写入新文件



我试图自动化某些动物能量需求的计算,其中我在饲料,每日饲料摄入量等天数中输入了输入。我的代码首先在CSV的初始数据中读取,使用它来计算循环之外的一些起始值,在feed上运行当天的能量计算的循环,将这些结果存储在数据框架中,然后将最终数据框架写入CSV。

我在这样的单个记录基础上有来自> 300绵羊的数据,并希望在文件中自动读取,并将结果编写为在特定文件夹中分离CSV文件。我知道这意味着循环中的一个循环,但是我试图弄清楚如何确切地进行循环。

我知道我需要使用files.LIST在文件中读取:

files = list.files("C:/Users/Me/Desktop/Sheepfiles/", pattern = "Sheep+.*csv")

,但我希望每个文件作为其自己的数据框架通过模型运行,我需要将所有文件分开进行进出。

setwd("C:Users/....../Sheepfiles")

input =  read.csv(file = "Sheep131.csv", header = TRUE, sep =",")
#set up initialized values outside loop here
LWt0 = input$LWT[1]
EBW = LWT0*.96*.891
#constants go here

Results = NULL;
timefeed = input$DOF
#now the loop
for (i in timefeed) 
{
#differential equations and calculations here
 results1 = (c(t, NEG, MEI, OldMEI, HPmaint, EBW, ID, TRT))
 names(results1) = c("DOF", "NEG", "MEI", "OldMEI","HPmaint", "EBW", "ID", "TRT")
 print((results1))
 Results = rbind(Results,results1)

#update variables to new values here
}
write.csv(Results, file = "Results131.csv")

我想要的是让他们能够用名称中的sheepx使用文件,其中一只绵羊,x是eartag#,将其读取,计算出来,然后自动输出,并在Resultes x.csv中使用结果来自动输出。。如果有帮助,则eartag编号在" ID"列下的原始输入文件中。因此,对于绵羊1:150,我有结果1:150 etc

稍后,我需要能够重新读取这些结果文件,在特定日期提取输出,然后将其拉入数据框架以进行比较,但这是我获得所有这些之后的下一步通过模型运行的文件。

您需要循环浏览文件名并执行每个文件的现有代码,因此解决方案可以看起来像:

setwd("C:Users/....../Sheepfiles")
files = list.files("C:/Users/Me/Desktop/Sheepfiles/", pattern = "Sheep+.*csv")
for (i in files) {
  input =  read.csv(file = i,
                    header = TRUE,
                    sep = ",")
  #set up initialized values outside loop here
  LWt0 = input$LWT[1]
  EBW = LWT0 * .96 * .891
  #constants go here

  Results = NULL
  timefeed = input$DOF
  #now the loop
  for (i in timefeed)
  {
    #differential equations and calculations here
    results1 = (c(t, NEG, MEI, OldMEI, HPmaint, EBW, ID, TRT))
    names(results1) = c("DOF", "NEG", "MEI", "OldMEI", "HPmaint", "EBW", "ID", "TRT")
    print((results1))
    Results = rbind(Results, results1)

    #update variables to new values here
  }
  # automatically generate filename for results
  result.filename <- gsub("Sheep", "Results", i)
  write.csv(Results, file = result.filename)
}

因此,您基本上将一个循环围绕代码缠绕,并用文件名作为反变量。

最新更新