R 循环浏览子文件夹并从CSV文件中提取数据
我正在尝试循环遍历wd的所有子文件夹,列出它们的名称,在每个文件夹中打开“data.csv”,并从该csv文件中提取第二个和最后一个值 df将如下所示:R 循环浏览子文件夹并从CSV文件中提取数据,r,R,我正在尝试循环遍历wd的所有子文件夹,列出它们的名称,在每个文件夹中打开“data.csv”,并从该csv文件中提取第二个和最后一个值 df将如下所示: Name_folder_1 2nd value Last value Name_folder_2 2nd value Last value Name_folder_3 2nd value Last value 现在,由于这个线程,我成功地列出了子文件夹和每个文件:但我很难实现我猜想应该是一个嵌套循环来读取和提取csv文
Name_folder_1 2nd value Last value
Name_folder_2 2nd value Last value
Name_folder_3 2nd value Last value
现在,由于这个线程,我成功地列出了子文件夹和每个文件:但我很难实现我猜想应该是一个嵌套循环来读取和提取csv文件中的数据
parent.folder <- "C:/Users/Desktop/test"
setwd(parent.folder)
sub.folders1 <- list.dirs(parent.folder, recursive = FALSE)
r.scripts <- file.path(sub.folders1)
files.v <- list()
for (j in seq_along(r.scripts)) {
files.v[j] <- dir(r.scripts[j],"data$")
}
任何提示都将不胜感激
编辑:
我正在尝试下面详细介绍的解决方案,但肯定有什么我错过了,因为它运行平稳,但没有产生任何效果。这可能是非常愚蠢的事情,我是R的新手,学习曲线让我头晕目眩:p
lapply(files, function(f) {
dat <- fread(f) # faster
dat2 <- c(basename(dirname(f)), head(dat$time, 1), tail(dat$time, 1))
write.csv(dat2, file = "test.csv")
})
不容易复制,但我的建议如下:
library(data.table)
files <- list.files("PARENTDIR", full.names = T, recursive = T, pattern = ".*.csv")
lapply(files, function(f) {
dat <- fread(f) # faster
# Do whatever, get the subfolder name for example
basename(dirname(f))
})
您只需递归查找父目录中的所有CSV文件,仍然可以获得相应的父文件夹。Ho,这样做完全有意义!谢谢你!我不知道fread函数,它特别有用,因为我需要处理大量的.csv文件。我对[dat]有点困惑,它是关于作用域的。因为您在函数中调用fread,所以看不到在父环境中创建的对象。请尝试functionx{dat