r - 将一系列 CSV 文件读入 R、运行函数、将输出写入新文件
问题描述
我正在尝试自动计算一些动物能量需求,其中我输入了饲料天数、每日采食量等。我的代码首先从 CSV 读取初始数据,使用它来计算循环外的一些起始值,循环运行当天的能量计算循环,将这些结果存储在数据框中,然后将最终数据框写入 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 是耳标 #,将这些文件读入、计算,然后在 ResultsX.csv 中自动输出结果。如果有帮助,耳标编号位于“ID”列下的原始输入文件中。所以对于绵羊 1:150 我会有 Results1:150 等
稍后,我将需要能够重新读取这些结果文件,在特定日期提取输出,然后将它们拉入数据框以与观察结果进行比较,但这是我运行完所有这些文件后的下一步该模型。
解决方案
您需要遍历文件名并为每个文件执行现有代码,因此解决方案可能如下所示:
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)
}
所以你基本上在你的代码周围包裹了一个 for 循环,你的文件名作为计数器变量。
推荐阅读
- python - 如何使用矢量化方法将创建多个新列的函数应用于熊猫数据框?
- python - 执行远程源代码时“没有这样的文件或目录”
- java - Mapstruct 在实现中添加注释
- c# - UIElement 返回空文本
- reactjs - 当onPress菜单反应原生时如何保存价值?
- c++ - asctime 格式的由来是什么?
- windows - 不保存崩溃转储/小型转储
- google-cloud-platform - 通过代理从 gke 连接到云 sql - 连接被拒绝
- wordpress - Wordpress 显示页面而不是没有 https 前缀的 404 错误
- pandas - pd.to_datetime 错误 ValueError: '-' is a bad directive