2014-09-18 3 views
2

Я хотел бы удалить объект, имя которого содержится в строковом объекте.R: оценить имя объекта перед удалением

a <- 1 
b <- "a" 

Я попытался сделать:

> rm(get(b)) 
Error in rm(get(b)) : ... must contain names or character strings 
> remove(eval(b)) 
Error in remove(eval(b)) : ... must contain names or character strings 

Как я могу получить R, чтобы удалить объект, имя которого содержится в виде строки в b (а именно здесь, a)?

ответ

5

Просто

rm(list = b) 

От ?rm:

список: персонаж вектор именования объектов, которые будут удалены.

Для того, чтобы достичь желаемого выхода вы можете сделать

rm(list = eval(b)) 

или (как предложенный @James)

eval(call("rm", b)) 
+0

Гах, это то, что имел в виду документация! (facepalm) – Peutch

+0

Проблема 'eval' обусловлена ​​нестандартной оценкой' ... 'Я думаю. 'eval (call (" rm ", b))' делает трюк. – James

+0

Вам просто нужно RM;) – hadley

Смежные вопросы