r - 尝试从包含每个文件夹的单独列的文件列表(在嵌套目录中)创建数据框
问题描述
我对 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 标签。我不知道这是否是正确的方法,我相信有一种更优雅的方法,但我还没有找到。
如果我忽略了一个已经存在的答案,请随时指导我。谢谢您的帮助!
解决方案
这可以通过函数separate
from来完成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"))
推荐阅读
- azure - ARM 部署错误 - 请求内容无效,无法反序列化:'无法反序列化当前 JSON 数组
- python - trace32 python api读取内存地址-如何?
- excel - 为工作簿中的多个工作表设置动态范围,不包括 2 个工作表。(错误 438)VBA
- kotlin - 保留有关失败项目处理的详细信息
- laravel - Laravel - 在中间件中更改路线
- reactjs - TypeError:未定义不是一个对象(评估'navigation.route.params')
- firebase - 如果用户登录或未登录,则无法更新页面。扑火
- meteor - 如何在 BigBlueButton html5-client 中进行 HTML 更改或自定义模块(如 poll)?
- php - 用一列中的值链接的 MySQL 表数据构建多维 PHP 数组
- python - Python中的时间戳、时间增量和转换