读取目录/R 编程语言中的前 10 个文件夹

Reading first 10 folders in directory / R Programming Language

我一直在处理文件夹和子文件夹的数据集(文件夹 -> 子文件夹 -> 文件) 我无法读取前 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]])

你怎么看:

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)
}

你只需要调整你的文件夹结构

使用 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)

@sequoia 的答案有效,但在 R 中,您可以利用简洁的 functional programming,@langtang 的答案是 lapply()。试试这个 one-liner:

library(tidyverse)
library(fs)

d <- dir_ls("path/to/folders", recurse = TRUE) %>% walk(~read_lines(.x))