Как удалить только объекты, полученные при запуске последнего скрипта в среде R studio? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть код root, в котором много скриптов. После запуска, например, первых 4 сценариев, мне может потребоваться отменить объекты в среде, полученные из 4-го сценария. Является ли это возможным ? Альтернативой может быть rm (), но в этом случае мне придется повторно запускать все сценарии, а это займет некоторое время, так как у меня загружено много данных.

1 Ответ

0 голосов
/ 08 мая 2020

Определите функцию rm_new() (в своем 'root коде'):

rm_new=function( old ) {
    current=ls(,envir=parent.frame())
    to_delete = current[!(current %in% old)]
    rm( list=to_delete,envir=parent.frame() )
}

Когда вы дойдете до конца своего 'root кода', запомните объекты, которые вы хотите keep:

obj_to_keep=c("obj_to_keep",ls())

Теперь вы можете добавить все, что хотите, и использовать rm_new (), чтобы удалить это, когда вы закончите с этим:

a=1:100
obj_to_keep=c("obj_to_keep",ls())

b=1:50
ls()
# [1] "a"           "b"           "obj_to_keep" "rm_new"   

rm_new( old=obj_to_keep )
ls()
# [1] "a"           "obj_to_keep" "rm_new"  
...