【发布时间】:2019-06-18 06:54:25
【问题描述】:
我想递归扫描getwd() 中的所有文件夹,选择匹配模式的文件夹,将文件夹名称添加为新的subject 列,并为每个文件夹编写一个.csv。
到目前为止,我设法做到了以下几点,但它仅适用于手动切换文件夹:
library(tidyverse)
dir <- "AP4T/"
APT4 <-
list.files(path = dir, pattern = "*_PULS.log") %>%
map_df(~read_table2(., skip = 5), .id="file") %>%
select(-CHANNEL, -SIGNAL)
write_csv2(APT4, path = "APT4T/resp.csv")
虽然这些代码有效,但我很难手动更改数百个文件夹,我相信有一种方法可以自动化它,但不知道如何。
例如:
dir<-list.dirs(, full.names = T, recursive = T)
for(i in dir){
list.files(path = dir, pattern = "*_RESP.log", full.names = T) %>%
map_df(~read_table2(., skip = 5), .id="file") %>%
select(-CHANNEL, -SIGNAL) %>%
write_csv(., path = "resp.csv")
}
将创建一个巨大的 csv 文件,其中包含与模式匹配的所有文件 - 来自所有目录并且不存储任何“目录名称”特定列,以便我可以识别研究对象。
另外 - 即使单个文件也很大,我的处理软件在每个参与者一个文件的基础上工作得更好。这就是为什么我想将与模式匹配的结果存储在单独的文件中,并带有额外的列 for
- 一个文件夹中的文件数 - 通过将.id="file 添加到~read_table2() 调用
- 文件夹名称(文件夹 = 主题)
我觉得我已经很接近了,但这里仍然缺少一些要点。 感谢您的帮助
【问题讨论】: