Let's say I define an S4 class 'foo' with two slots 'a' and 'b', and define an object x of class 'foo',
setClass(Class = 'foo', slots = c( a = 'numeric', b = 'character' )) x <- new('foo', a = rnorm(1e3L), b = rep('A', times = 1e3L)) format(object.size(x), units = 'auto') # "16.5 Kb" Then I want to remove slot 'a' from the definition of 'foo'
setClass(Class = 'foo', slots = c( b = 'character' )) slotNames(x) # slot 'a' automatically removed!! wow!!! I see that R automatically take cares my object x and have the slot 'a' removed. Nice! But wait, the size of object x is not reduced.
format(object.size(x), units = 'auto') # still "16.5 Kb" format(object.size(new(Class = 'foo', x)), units = 'auto') # still "16.5 Kb" Right.. Somehow 'a' is still there but I just cannot do anything to it
head(x@a) # `'a'` is still there rm(x@a) # error x@a <- NULL # error So question: how can I really remove slot 'a' from x and have its size reduced (which is my primary concern)?
没有评论:
发表评论