Переименование нескольких переменных одновременно в R - PullRequest
0 голосов
/ 29 января 2020

В моей среде несколько переменных, имена которых оканчиваются на «.xlsx» или «.csv». Какой простой способ удалить эти расширения из их имен без создания новых переменных и удаления старых.

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

Я пытался использовать комбинации gsub и names безуспешно.

Любая помощь?

Ответы [ 2 ]

1 голос
/ 29 января 2020

Мы можем использовать file_path_sans_ext

tools::file_path_sans_ext(c('file.csv', '.xlsx'))

Если они являются именами объектов

nm <- ls(pattern = '\\.(csv|xlsx)$')
nm1 <- tool::file_path_sans_ext(nm)
list2env(setNames(mget(nm), nm1), .GlobalEnv)
rm(list = nm)
0 голосов
/ 30 января 2020

Это не правильный способ сделать это, но он должен работать. Он возьмет все объекты ls с именем xlsx и удалит с gsub ".xsls" и удалит rm исходный объект. Точно так же это можно сделать для CSV.

   for(i in grep("xlsx",ls(), value=T)){
    assign(gsub("\\.xlsx","",i), eval(i))
    rm(eval(i))
   }
...