Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 循环浏览子文件夹并从CSV文件中提取数据_R - Fatal编程技术网

R 循环浏览子文件夹并从CSV文件中提取数据

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文

我正在尝试循环遍历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文件中的数据

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