我一直在处理文件夹和子文件夹(文件夹->子文件夹-> file)的数据集,我在读取前10个数据文件夹时遇到了问题。我使用了下面的代码,但它不起作用。请帮帮忙
> for(i in seq_along(my_folders)){
+ my_data[[[i]]] = list.files(path = "~/dataset1", recursive = TRUE)下面请参阅在子文件夹中读取txt文件的问题:
> for(i in 1:13){
+ current_dir = dirs[i]
+ lines = readLines(mydata[[i]])}这会导致错误:文件中的错误(con,"r"):无效的'description‘参数
但在循环之外,这是可行的:
> lines <- readLines(my_data[[1]])发布于 2022-02-20 23:46:59
@红杉的答案是有效的,但在R中,你可以利用简洁的功能程序设计,这是lapply()的回答。试试看这个衬里:
library(tidyverse)
library(fs)
d <- dir_ls("path/to/folders", recurse = TRUE) %>% walk(~read_lines(.x))发布于 2022-02-20 11:46:50
你是怎么想的?
dirs = list.dirs(recursive = FALSE) # reads all directories/folders
mydata = list() # create empty list
for (i in 1:10) { # only takes the first 10 directories
current_dir = dirs[i]
mydata[[i]] = list.files(path = file.path("~/dataset1", current_dir), recursive = TRUE)
}您只需调整文件夹结构即可。
发布于 2022-02-20 12:59:36
使用dir获取文件名的向量,例如,文件夹"f“中的所有.txt文件及其所有子文件夹
files= dir("f",pattern = ".txt", full.names = T,recursive = T)
files
[1] "f/f1/f1_1/f1_1.txt"
[2] "f/f1/f1_2/f1_2.txt"
[3] "f/f2/f2_1/f2_1.txt"
[4] "f/f2/f2_2/f2_2.txt"然后使用readLines阅读它们
lapply(files, readLines)https://stackoverflow.com/questions/71193623
复制相似问题