Die OP hat beantragt, alle Verzeichnisse für csv
Dateien zu suchen, sondern nur diejenigen Verzeichnisse zu betrachten, die genau einecsv
Datei enthalten. Nur diese Dateien sollten importiert werden.
Auf UNIX-Systemen gibt es OS wie fgrep
Befehle, die wahrscheinlich für diesen Zweck verwendet werden kann, aber ich glaube, die Lösung Basis R unten sollte auf jedem System arbeiten:
# define starting dir
path <- file.path("path", "to", "start", "search")
# or path <- file.path(".")
# or path <- getwd()
# find all directories, recursively, i.e., also sub-directories
dirs <- list.dirs(path, recursive = TRUE)
# search all directories for csv files, i.e., file name is ending with csv
# return result as a list with a vector of file names per list element
csv_files <- lapply(dirs, list.files, pattern = "\\.csv$", full.names = TRUE)
# pick only those list elements which contain exactly one .csv file
# and unlist to get vector of file names.
# note lenghts() gets the length of each element of a list
files_to_read <- unlist(csv_files[lengths(csv_files) == 1L])
# read selected files, return result in a list
imported <- lapply(files_to_read, data.table::fread)
# or use a different file reader, alternatively
imported <- lapply(files_to_read, readr::read_csv)
# name list elements to identify imported data sets
setNames(imported) <- files_to_read
# or use only the file name
setNames(imported) <- basename(files_to_read)
# or use only the name of the enclosing directory
setNames(imported) <- basename(dirname(files_to_read))
Wenn die CVS-Dateien Sie wollen lesen Sie haben ein gemeinsames Muster, können Sie 'list.files' mit' pattern' Argument verwenden –