Я пишу код R для преобразования 400 файлов Excel в простые для чтения машиной плоские файлы. При получении этих файлов Excel наступает сжатый срок, и нет возможности получить исходные файлы в машиночитаемом формате.
У меня есть R-код, который будет извлекать данные в нужных нам строках и столбцах, удалять пробелы и красиво представлять их в формате MR. Проблема, которую мне нужно решить сейчас, заключается в том, что мне нужно подтвердить, что каждый из 400 файлов имеет правильный формат для правильной работы функции. Для этого я просто хочу проверить множество простых вещей, например, что столбец 'title' находится в ячейке A9 в каждом из файлов Excel.
Я новичок в R и действительно изо всех сил пытаюсь написать функцию, которая позволит мне изучить все 400 файлов за один раз.
Самое близкое, что у меня есть, это:
template_dir <- "file path of main directory"
files <- list.files(path=template_dir, pattern="*.xlsx", full.names=TRUE, recursive=TRUE)
df.files <- lapply (files, read_excel)
Затем генерируется список из 400 элементов. Я могу загрузить каждый из них по отдельности без проблем с
df.files [1]
Но, если я попытаюсь использовать:
title_loc <- which (df.files [1] == "Title", arr.ind = TRUE)
Это не работает, я просто получаю пустое значение. Я знаю, что функция 'which' работает, хотя, когда я просто читаю один файл Excel в R как df (или помещаю путь к файлу), тогда функция 'which' работает нормально и возвращает [1,9] как ожидается.
400 файлов распределены по нескольким папкам (с этим я тоже ничего не могу поделать), и я могу получить список всех файлов, используя list.files. Я хочу выполнить серию простых проверок (ссылка для «title»; ссылка для «age»; ссылка для «location» и т. Д.), Чтобы подтвердить, что все 400 файлов размещены одинаково. Таким образом, было бы идеально перечислить выходные данные для 'title' в одном df, чтобы я мог затем проверить, что столбец равен '1' для всех 400, а строка '9' для всех 400.
Я думаю, что я хочу это:
title_loc <- which (*loop to cycle through every element in df.files* == "Title", arr.ind = TRUE)
Но способ написания циклов побеждает меня. Будет ли проще получить путь к файлу для всех 400 файлов Excel в списке, а затем просто прокрутить их (вместо использования lapply для импорта всех данных)?
Спасибо