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