Как запустить один и тот же код для нескольких файлов .csv с a для l oop в R? - PullRequest
0 голосов
/ 14 марта 2020

Я написал код для фильтрации, группировки и сортировки моих больших файлов данных. У меня есть несколько текстовых файлов, которые я должен проанализировать. Я знаю, что могу скопировать код и запустить его с новыми данными, но мне было интересно, есть ли способ поместить это в форму для l oop, которая открывала бы текстовые файлы один за другим и запускала и сохраняла результаты. Я использую следующее, чтобы загрузить все мои текстовые файлы. На следующих шагах я выбираю столбцы и фильтрую их, чтобы найти нужные значения. Но на данный момент он читает только один файл. Я хочу получить результаты из всех файлов данных.

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)
}

1 Ответ

1 голос
/ 14 марта 2020

Вы можете поместить все, что вы хотите применить к каждому файлу в функции:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...