Как удалить часть имени при сохранении файла?

У меня есть следующий скрипт:

Files <- list.files(datapath, pattern = ".txt")


# convert all .txt files in the given folder
for (i in 1:length(Files)){
  dataname <- Files[i]
  filename <- paste(datapath, dataname, sep="")

  read_eprime(filename) %>% FrameList() %>% to_data_frame() %>% select(Cue:ISIslide.RT, GetReady.OnsetTime, ScanWait.OffsetTime) %>% slice (-1) %>%  
    fill(GetReady.OnsetTime, .direction = "up") %>% fill(ScanWait.OffsetTime, .direction = "up") %>% slice (-79) -> edf


  write.csv(edf, file = paste0(datapath, dataname, "_P.csv"), na = "", row.names = FALSE)

  #write.csv(edf, file=paste0(datapath, "tsv_", dataname), quote=FALSE, sep="\t", na = "")
}

Как настроить, чтобы выходные файлы не сохранялись с ".txt" в середине имени?


person KKhosra    schedule 06.07.2018    source источник
comment
Возможный дубликат разделения имени файла на имя, расширение   -  person GordonShumway    schedule 06.07.2018


Ответы (2)


Проверьте file_path_sans_ext для получения имени файла. Это из встроенного пакета tools, и он вернет только имя файла без расширения.

tools::file_path_sans_ext("myFile.txt")
## [1] "myFile"

Вы также можете использовать это вместо того, чтобы вставлять путь к файлу в имя файла.

tools::file_path_sans_ext("Downloads/Stuff/myFile.txt")
## [1] "Downloads/Stuff/myFile"
person gos    schedule 06.07.2018

Вы можете думать об использовании gsub для замены .txt на "" из имени данных как:

gsub("\\.txt","","file.txt")
#[1] "file"

dataname <- "myFile.txt"

gsub("\\.txt","",dataname)
#[1] "myFile"

dataname <- "Downloads/Stuff/myFile.txt"
gsub("\\.txt","",dataname)
#[1] "Downloads/Stuff/myFile"

Хорошая часть gsub заключается в том, что он также может исправлять многократное вхождение «.txt». например.:

dataname <- "Downloads/Stuff/my.txtFile.txt"
gsub("\\.txt","",dataname)
#[1] "Downloads/Stuff/myFile"
person MKR    schedule 06.07.2018