r - 如何在 R 中使用 for 循环为多个 .csv 文件运行相同的代码?
问题描述
我编写了一个代码来过滤、分组和排序我的大型数据文件。我有多个文本文件需要分析。我知道我可以复制代码并使用新数据运行它,但我想知道是否有一种方法可以将其放入 for 循环中,该循环将一个一个地打开文本文件并运行并存储结果。我使用以下内容加载我的所有文本文件。在接下来的步骤中,我选择列并过滤它们以找到所需的值。但目前它只读取一个文件。我想从所有数据文件中获取结果。
Samples <- Sys.glob("*.csv")
for (filename in Samples) {
try <- read.csv(filename, sep = ",", header = FALSE)
shear <- data.frame(try[,5],try[,8],try[,12])
lane <- shear[which(shear$Load == "LL-1"),]
Ext <- subset(lane, Girder %in% c("Left Ext","Right Ext"))
Max.Ext <- max(Ext$Shear)
}
解决方案
您可以将要应用于每个文件的所有内容放在一个函数中:
apply_fun <- function(filename) {
try <- read.csv(filename, sep = ",", header = FALSE)
shear <- data.frame(try[,5],try[,8],try[,12])
lane <- shear[which(shear$Load == "LL-1"),]
Ext <- subset(lane, Girder %in% c("Left Ext","Right Ext"))
return(max(Ext$Shear, na.rm = TRUE))
}
在这里,我们似乎只需要max
每个文件中的一个数字 ( ),我们可以使用sapply
该函数将函数应用于每个文件。
Samples <- Sys.glob("*.csv")
sapply(Samples, apply_fun)
推荐阅读
- kendo-grid - 剑道网格角度未加载超过 1000 条记录
- python - 多处理 initargs - 它是如何在幕后工作的?
- yocto - 在 yocto 中启用 strongswan 的 swanctl 插件
- api - 通过 API 的 OAuth2.0 连接失败
- javascript - 在画布上用渐变画线
- angular - CkEditor 5 自定义拼写检查
- node.js - 如何在继续之前等待异步 Mongoose Promise 返回
- pyspark - pyspark - 转换 DF 结构
- c++ - 来自 mingw-w64 的 wxWidgets 不能在 CLion 中使用
- node.js - 如何使用 lambda 函数将一个 S3 存储桶中的 .m3u8 文件及其 .ts 文件复制到另一个存储桶