[R] R copies for no apparent reason

Jiucang Hao jiucang at goraltrading.com
Thu Mar 2 16:35:49 CET 2017

Hi Everyone,


Some R function will make R copy the object AFTER the function call, like
nrow, while some others don't, like sum. For example the following code:

x = as.double(1:1e8)

system.time(x[1] <- 100)

y = sum(x)

system.time(x[1] <- 200)     ## Fast (takes 0s), after calling sum

foo = function(x) {



y = foo(x)

system.time(x[1] <- 300)     ## Slow (takes 0.35s), after calling foo

Calling foo is NOT slow, because x isn't copied. However, changing x again
is very slow, as x is copied. My guess is that calling foo will leave a
reference to x, so when changing it after, R makes another copy.

Any one knows why R does this? Even when the function doesn't change x at
all? Thanks.




JiuCang Hao

	[[alternative HTML version deleted]]

More information about the R-help mailing list