我正试图从具有2,000多个大文件的文件夹中仅导入357个特定的csv文件。我有一个单独的列表,名为“名称”,其中仅包含我要分析的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)
但是我不想导入所有2,000多个巨型文件。是否可以使用循环将我想要的名称列表中的选择文件读入R中?
我希望只有一个文件,其中包含我已经过滤和选择的357个文件中的所有数据。感谢您的时间。
答案 0 :(得分:1)
尝试这项工作。
我假设您位于所有文件所在的文件夹中,并且只想导入 文件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是带有文件名的向量。您可以用已经拥有的列表替换这部分。