Подтвердить что ты не робот

Получение имени файла без расширения в R

Я немного новичок R, поэтому сомневаюсь.

У меня есть файл

ABCD.csv 

Длина до .csv не фиксирована и не меняется до любой длины. Как я могу извлечь часть до .csv.

4b9b3361

Ответ 1

Там встроен file_path_sans_ext из стандартного пакета install tools, который захватывает файл без расширения.

tools::file_path_sans_ext("ABCD.csv")
## [1] "ABCD"

Ответ 2

basename также удалит путь, ведущий к файлу. И с этим регулярным выражением любое расширение будет удалено.

filepath <- "d:/Some Dir/ABCD.csv"
sub(pattern = "(.*)\\..*$", replacement = "\\1", basename(filepath))

# [1] "ABCD"

Или, используя file_path_sans_ext, как предложил Тайлер Ринкер:

file_path_sans_ext(basename(filepath))

# [1] "ABCD"

Ответ 3

Вы можете использовать sub или substr

sub('\\.csv$', '', str1) 
#[1] "ABCD"

или

substr(str1, 1, nchar(str1)-4)
#[1] "ABCD"

Использование 'file_path' из сообщения @JasonV

sub('\\..*$', '', basename(filepath))
#[1] "ABCD"

или

library(stringr)
str_extract(filepath,  perl('(?<=[/])([^/]+)(?=\\.[^.]+)'))
#[1] "ABCD"

данные

str1 <- 'ABCD.csv'

Ответ 4

U также может попробовать следующее:

data <- "ABCD.csv"
gsub(pattern = "\\.csv$", "", data)

#[1] "ABCD"

Это будет полезно и в случае списка файлов, скажем

data <- list.files(pattern="\\.csv$"), используя код, будет удалено расширение всех файлов в списке.