`objects ()` в R против Splus - PullRequest
       29

`objects ()` в R против Splus

1 голос
/ 22 марта 2011

Я хотел бы написать сценарий main.r, который возвращает рабочее пространство в состояние, в котором он находился до запуска (т. Е. В конце сценария удалите все и только объекты, которые были добавлены в рабочее пространство) , Выполнение следующего:

#main.r
initial.objects <- objects()
tmp1 <- 1
remove(list = setdiff(objects(), initial.objects)

через source('main.r') с консоли R работает как нужно. ОДНАКО, это НЕ работает в Splus с tmp1, оставленным в рабочем каталоге (это работает, когда я запускаю каждую строку отдельно, а не извлекаю весь файл). Пройдя немного дальше, я обнаружил, что в R objects() отслеживает объекты, входящие в рабочую область, даже в СРЕДНИЙ вызов source(). В Splus objects(), похоже, не "знает" об объектах, которые были добавлены в рабочую область до конца вызова source().

В: Что происходит? Что я могу сделать, чтобы что-то похожее на main.r работало в Splus?

1 Ответ

1 голос
/ 23 марта 2011

Я не уверен, что вы пытаетесь сделать здесь, но лучший способ перезагрузить среду - сохранить ее и перезагрузить.

save("pre-environ.Rdata")
## Your script goes here
rm(list=ls()) ## clean the environment
## Reload the original environ at end of your script
load("pre-environ.Rdata")
...