Как импортировать определенные файлы из большого списка в R - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь импортировать только 357 конкретных CSV-файлов из папки с более чем 2000 больших файлов. У меня есть отдельный список под названием «имена» с 357 файлами, которые я хочу проанализировать:

names$list_id = paste(list_id, 'csv', sep = '.')
names <- as.list(names)

Имена теперь выглядят так: 987.123.456.csv, 987.123.457.csv ....

Я знаю, как импортировать все файлы одновременно и объединить их в один файл с кодом:

filelist = list.files(pattern = "*.csv")
datalist = lapply(filelist, function(x)read.table(x, h=T))
D = do.call("rbind", datalist)                  

Но я не хочу импортировать все более 2000 гигантских файлов. Возможно ли прочитать только выбранные файлы из моего списка имен, которые я хочу в R, используя цикл?

Я надеюсь получить всего один файл со всеми данными только из 357 файлов, которые я уже отфильтровал и выбрал. Спасибо за ваше время.

1 Ответ

0 голосов
/ 24 января 2019

Попробуйте, если это сработает.

Я предполагаю, что вы находитесь в папке, где находятся все файлы, и что вы хотите импортировать только файлы 1.csv, 10.csv, 20.csv и 40.csv

library(dplyr)

selected_files_to_import <- paste(c(1,10, 20, 40), ".csv", sep = "")

list_of_data_frame <- lapply(selected_files_to_import, function(x){
  read.csv(x, stringsAsFactors = F)
})

aggregated_df <- bind_rows(list_of_data_frame)

Другим решением может быть

library(purrr)

selected_files_to_import <- paste(c(1,10, 20, 40), ".csv", sep = "")

aggregated_df <- map_df(selected_files_to_import,
       ~ read.csv(., stringsAsFactors = F))  

selected_files_to_import - вектор с именами файлов.Вы можете заменить эту часть списком, который у вас уже есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...