Есть ли способ программно различать среды пакетов и объекты среды, не относящиеся к пакету? Например, объекты x
и y
ниже представляют собой обе среды с тем же классом и атрибутами.Как отличить среду пространства имен пакетов от других объектов среды
x <- as.environment(cars)
y <- getNamespace("graphics")
Однако, судя по методу print
есть разница:
> print(x)
<environment: 0x1d38118>
> print(y)
<environment: namespace:graphics>
Теперь предположим, что у меня есть произвольный объект, как я могу определить, какой из двух он (не смотря на выходе print
)? Я хотел бы знать это, чтобы определить, как сохранить объект на диске. В случае с первым мне нужно сохранить представление списка среды (и, возможно, ее родителей), но для последнего я просто сохраню имя и версию пакета.