Иногда файлы данных входят в .rdata
объекты. Они раздражают по сравнению с .rds
файлами, потому что объекты имеют предопределенные имена. В моем случае я хочу переименовать объект автоматически и избавиться от неверно названной версии. Простой несколько надуманный пример:
#make a new iris with a bad name
badnameiris = iris
#save it to a file
save(badnameiris, file = "iris.rdata")
#rename badname version from global envir
rm(badnameiris)
#read iris from file
irisname = load("iris.rdata")
#this variable is not iris, but the name of the variable it was assigned to
irisname
[1] "badnameiris"
#it's to use the right name with get()
goodnameiris = get(irisname)
#but harder to get rid of the wrong one with rm()
rm(irisname)
Последняя строка не работает должным образом, потому что требует ввода пустого имени и получает символьный вектор. Я понимаю, что на самом деле можно использовать аргумент list
в rm()
, но предположим, что нельзя.
Как вообще можно преобразовать персонажа в не цитируемого для этих целей?
Я попробовал функции rlang , но они предназначены для нестандартной оценки, используемой в контексте tidyverse . Я попытался as.name()
, , как предложено здесь . Тоже не работает. Большинство вопросов, которые я мог найти, задавая этот вопрос, относятся к tidyverse , но я пытаюсь сделать контекст Base R.
(альтернативное решение выше - создать функцию, которая использует уничтожение локальной среды для удаления нежелательной копии объекта.)