从位于r中的文件夹中的文件列表中读取



我必须从互联网上下载大量数据,我不希望这些数据过多地挤占我的主目录,所以我喜欢将其移动到/data文件夹。我把这些数据做成一个列表,然后把整个列表移到那个文件夹中。但是,一旦位于文件夹中,我就很难使用sapply()和其他函数对整个文件列表进行分析。我在sapply()中找不到任何参数,它需要一个路径或任何东西,所以我想知道如何解决这个问题。下面是演示这个问题的代码:

library(dplyr)
library(fs)
mtcars %>% write.csv("data_1.csv")
DNase %>% write.csv("data_2.csv")
iris %>% write.csv("data_3.csv")
my_list <- list.files(pattern = "data_")
fs::file_move(my_list, new_path = "MYDIRECTORY/data")
sapply(my_list, read.csv)
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") :
cannot open file 'data_1.csv': No such file or directory

当您使用sapply函数时,您可以这样做:

all_data <- sapply(my_list, function(x) { 
read.csv(file = paste0("./data/", x))
})

然后,如果你想在一个数据表中添加所有的。csv文件,你可以这样做:

library(data.table)
rbindlist(all_data, fill = TRUE)

您可以通过不使用data.table::fread来简化,但它速度很快,如果文件夹中有很多文件,则值得保留它。

library(data.table)
library(dplyr)
library(purrr)

path_to_folder = "MYDIRECTORY/data"
df <- list.files(path=path_to_folder,pattern = "*.csv",full.names = T) %>% 
map_df(~fread(.,stringsAsFactors=F,check.names=T,strip.white=T))

相关内容

  • 没有找到相关文章

最新更新