У меня есть каталог (dir2 в приведенном ниже коде) с 200 подкаталогами, каждая из которых содержит файл данных .txt
и файл Setup.sas
. Мне нужно написать для l oop, который использует пакет asciiSetupReader
, для l oop по каждому подкаталогу, прочитать файлы в нем с помощью функции sas_ascii_reader
и привязать все полученные объекты чтения к одному фрейму данных. Я знаю, что это должно быть относительно просто, но у меня возникают трудности.
Я создал фрейм данных с двумя столбцами: один из списка имен файлов .txt
файлов, а другой из списка сопутствующих Setup.sas
files.
list_file_txt <- list.files(path = './dir1/dir2',
pattern='*Data.txt',
recursive=TRUE)
list_file_sas <- list.files(path = './dir1/dir2',
pattern='*Setup.sas',
recursive=TRUE)
files <- as.data.frame(cbind(list_file_txt,list_file_sas))
files <- files %>%
mutate(directory = str_sub(list_file_txt,1,7),
directory = paste0('/dir1/dir2/',directory))
Я попытался:
for (i in 1:nrow(files)) {
setwd(files$directory)
sas_ascii_reader(dataset_name = '*Data.txt',
sas_name = '*Setup.sas',
real_names = FALSE)
}
Результаты с ошибкой,
Error in setwd(files$directory) : cannot change working directory
, что, как я понимаю, означает, что R не распознает строки символов в столбце files $ directory в качестве путей к файлам для ссылки.
Я также пробовал (как указано в Как импортировать файлы из подкаталогов и называть их именем подкаталога R )
library(tidyverse)
tbl <-
list.files(path = './dir1/dir2',
recursive=TRUE) %>%
map_dfr(sas_ascii_reader,
dataset_name = '*Data.txt',
sas_name = '*Setup.sas',
.id = "filepath")
, но получите
Error in .f(.x[[i]], ...) : is.logical(value_label_fix) is not TRUE
, которого я вообще не понимаю.
Любая помощь будет принята с благодарностью. Всем спасибо.