Как удалить расширение файла с конца базового имени в R? [Дубликат]

На этот вопрос уже есть ответ:

Разбиение имени файла на имя, расширение 3 ответа

Как мне перечислить файлы данных в папке и сохранить их имена без расширений как факторы в кадре данных? Другими словами: как создать символьный вектор из списка имен файлов, не используя расширение «.csv», и сохранить этот вектор как список факторов в кадре данных после создания этого кадра данных из этих файлов?

Моей конечной целью является сохранение имен файлов, содержащих мои данные, в виде идентификаторов StudyID как факторов в кадре данных. Я думаю, что это чрезвычайно простая задача, но я не обнаружил форматирования, необходимого для регулярного выражения, или если есть какое-то взаимодействие между sapply и gsub, которое меняет форматирование.

Две папки «запланированные» и «размытые» содержат файлы с именами 1.csv, 2.csv и т. Д., Иногда с непоследовательными номерами. В частности, я думаю, что было бы хорошо получить коэффициенты «Размытые 1», «Запланированные 1», «Размытые 2», «Запланированные 2» и т. Д., Чтобы назвать данные, импортированные из этих файлов, для ссылки на идентификатор исследования (число). и категория (запланированная или размытая).

Код, который я пробовал в RStudio 1.0.143, с комментарием о том, что происходит:

# Create a vector of the files to process
filenames <- list.files(path = '../Desktop/data/',full.names=TRUE,recursive=TRUE) 
# We parse the path to find the terminating filename which contains the StudyID.
FileEndings <- basename(filenames)
# We store this filename as the StudyID
regmatches('.csv',FileEndings,invert=TRUE) -> StudyID   # Error: ‘x’ and ‘m’ must have the same length
lapply(FileEndings,grep('.csv',invert=TRUE)) -> StudyID # Error: argument "x" is missing, with no default
sapply(FileEndings,grep,'.csv',invert=TRUE) -> StudyID; StudyID # Wrong: Gives named integer vector of 1's
sapply(FileEndings,grep,'.csv',invert=TRUE,USE.NAMES=FALSE) -> StudyID; StudyID # Wrong: Gives integer vector of 1's
sapply(FileEndings,gsub,'.csv',ignore.case=TRUE,invert=TRUE,USE.NAMES=FALSE) -> StudyID; StudyID # Error: unused argument (invert = TRUE)
sapply(FileEndings,gsub,'.csv','',ignore.case=TRUE,USE.NAMES=FALSE) -> StudyID; StudyID # Wrong: vector of ""
sapply(FileEndings,gsub,'[:alnum:].csv','[:alnum:]',ignore.case=TRUE,USE.NAMES=FALSE) -> StudyID; StudyID # Wrong: vector of "[:alnum:]"
sapply(FileEndings,gsub,'[[:alnum:]].csv','[[:alnum:]]',ignore.case=TRUE,USE.NAMES=FALSE) -> StudyID; StudyID # Wrong: vector of "[[:alnum:]]"
sapply(FileEndings,gsub,'[:alnum:]\.csv','[:alnum:]',ignore.case=TRUE,USE.NAMES=FALSE) -> StudyID; StudyID # Error: '\.' is an unrecognized escape

Документация не ответила на этот вопрос, и несколько веб-страниц в Интернете предоставляют слишком упрощенные примеры, которые не решают эту проблему. Я продолжу поиск, но я надеюсь, что вы предоставите решение, чтобы ускорить эту работу и помочь будущим пользователям. Спасибо

Ответы на вопрос(3)

Ваш ответ на вопрос