сортировка файлов и чтение по базовому имени в R - PullRequest
0 голосов
/ 26 апреля 2018

Этот вопрос, возможно, задавали раньше, но я не мог понять, как это сделать. У меня есть несколько файлов, хранящихся в разных папках, скажем, folder1, folder2, folder3. Я хочу отсортировать эти файлы по их базовому имени и создать список данных. Это то, что я сделал.

files1<-list.files("a/b/c/folder1/",pattern=".csv",full.names=T)
files2<-list.files("a/b/c/folder2/",pattern=".csv",full.names=T)
files3<-list.files("a/b/c/folder3/",pattern=".csv",full.names=T)

# Create a list to sort the files
files<-c(files1,files2,files3)
newlist<-sort(basename(files))   

Это даст отсортированный список файлов по их базовому имени, a01.csv, b02.csv..etc.

Я пытаюсь прочитать отсортированный список файлов, но теперь у меня нет пути к файлу, поэтому я не могу их прочитать.

readfiles<-lapply(newlist,function(x){read.csv(x,sep=",",stringsAsFactors=F,header=T)})

Есть ли способ прочитать этот отсортированный список файлов?

1 Ответ

0 голосов
/ 26 апреля 2018

Просто используйте order, чтобы получить упорядоченный вектор индексов для перестановки исходного вектора файлов:

files <- c("path/b01.csv","path/a01.csv", "path/a02.csv")
files[order(basename(files))]

[1] "path/a01.csv" "path/a02.csv" "path/b01.csv"
...