La velocidad de la operación vectorizada depende del número de columnas de data.frame

¿Por qué lleva más tiempo operar una comparación en un data.frame con la misma cantidad de elementos, pero organizada en más columnas en operaciones vectorizadas? Tome este ejemplo simple, donde restamos 0.5 de cada elemento y luego lo comparamos para ver si es <0 (relacionado con esta pregunta ):

f.df <- function( df , x = 0.5 ){
  df <- df - x
  df[ df < 0 ] <- 0
  return( df )
}


df1 <- data.frame( matrix( runif(1e5) , nrow = 1e2 ) )
df2 <- data.frame( matrix( runif(1e5) , nrow = 1e3 ) )
df3 <- data.frame( matrix( runif(1e5) , nrow = 1e4 ) )

require( microbenchmark )
microbenchmark( f.df( df1 ) , f.df( df2 ) , f.df( df3 ) , times = 10L )


#Unit: milliseconds
#     expr        min         lq     median         uq        max neval
# f.df(df1) 1562.66827 1568.21097 1595.07005 1674.91726 1680.90092    10
# f.df(df2)   95.77452   98.12557  101.31215  190.46906  198.23927    10
# f.df(df3)   16.25295   16.42373   16.74989   17.95621   18.69218    10

Respuestas a la pregunta(3)

Su respuesta a la pregunta