首页 > 解决方案 > 尝试从包含每个文件夹的单独列的文件列表(在嵌套目录中)创建数据框

问题描述

我对 R 比较陌生,并且正在为我的论文处理一些相机陷阱图像数据。我有一个包含 29 个文件夹的文件夹,每个文件夹代表一个林地,不同的子文件夹代表位置和采样周期。

list在 R 中创建了一个 (?) 使用

files <- list.files(full.names = TRUE, recursive = TRUE, include.dirs =TRUE)

现在给了我每个图像的“值”,如下所示:

"./1780/Location1/Check_19.11.19/IMG_0171.JPG"

我现在想把它变成一个数据框并将它分成离散的,所以我有一个用于“站点”(例如 1780)一个用于位置(值将始终为 1 或 2)一个用于“时间段”(ieCheck_19. 11.19)和一个用于图像文件名。这样我就可以在另一列中手动附加 ID 标签。我不知道这是否是正确的方法,我相信有一种更优雅的方法,但我还没有找到。

如果我忽略了一个已经存在的答案,请随时指导我。谢谢您的帮助!

标签: r

解决方案


这可以通过函数separatefrom来完成tidyr。查看文档以获取更多信息。

  library(tidyr)
  library(dplyr)

  files <- list()
  files[1] <- "./1780/Location1/Check_19.11.19/IMG_0171.JPG"
  files[2] <- "./1780/Location2/Check_19.12.19/IMG_0171.JPG"


  df <- data.frame(column= unlist(files)) %>% 
           separate(column, sep="/", into=c("x","site", "location", "time","filename")) %>% 
           select(-x)

或者

files <- gsub("^./","",files)
df <- data.frame(column= unlist(files)) %>% 
         separate(column, sep="/", into=c("site", "location", "time","filename"))

推荐阅读