阅读位于R文件夹中的文件列表

x33g5p2x  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(125)

我必须从互联网上大量下载数据,我不想让这些数据塞满我的主目录,所以我喜欢把它移到/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
kx7yvsdv

kx7yvsdv1#

您可以通过不使用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))
3wabscal

3wabscal2#

使用sapply函数时,可以执行以下操作:

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

然后,如果您希望将所有.csv文件追加到一个数据表中,可以执行以下操作:

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

相关问题