如何从R

时间:2019-01-23 20:33:22

标签: r loops

我正试图从具有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个文件中的所有数据。感谢您的时间。

1 个答案:

答案 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是带有文件名的向量。您可以用已经拥有的列表替换这部分。