Чтение нескольких файлов в R как строки в for.loop - PullRequest
0 голосов
/ 20 марта 2020

У меня есть код, который читает два разных файла CSV из папки во время выполнения. Мне нужно использовать для l oop в этом контексте, чтобы выполнить это несколько раз и записать вывод в отдельный файл CSV в форме "bsc_.csv". Формат файла двух входных CSV-файлов: «base_.csv» и «fut_.csv». Файлы нумеруются постепенно, и это тот шаблон, который мне нужен для повторения. Пример кода прилагается ниже.

library('CDFt')
d1<-read.csv("base1.csv",header=TRUE)
d2<-read.csv("fut1.csv",header=TRUE)
A1<-d1[,2]
A2<-d1[,3]
A3<-d2[,2]
CT<-CDFt(A1,A2,A3)
x<-CT$x
FGp<-CT$FGp
FGf<-CT$FGf
FRp<-CT$FRp
FRf<-CT$FRf
ds<-CT$DS
d<-round(ds,3)
dat<-replace(d,d<0,0)
write.table(dat,"bsc1.csv", row.names=F,na="NA",append=T, quote= FALSE, sep=",", col.names=F)

1 Ответ

0 голосов
/ 20 марта 2020

Попробуйте это (не проверено):

bases <- list.files(pattern = "base[0-9]*\\.csv$")
futs <- list.files(pattern = "fut[0-9]*\\.csv$")

mismatches <- setdiff(gsub("^base", "", bases), gsub("^fut", "", futs) )
if (length(mismatches)) {
  warning("'bases' files not in 'futs': ", paste(sQuote(mismatches), collapse = ", "))
  bases <- setdiff(bases, paste0("base", mismatches))
}
# and the reverse
mismatches <- setdiff(gsub("^fut", "", futs), gsub("^base", "", bases) )
if (length(mismatches)) {
  warning("'futs' files not in 'bases': ", paste(sQuote(mismatches), collapse = ", "))
  futs <- setdiff(futs, paste0("fut", mismatches))
}

ign <- Map(function(fb, ff) {
  bdat <- read.csv(fb, header = TRUE)
  fdat <- read.csv(ff, header = TRUE)
  # ...
  newfn <- gsub("^base", "bsc", fb)
  write.table(dat, newfn, ...)
}, bases, futs)
...